Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2. Entendiendo AJAX
a. Que no es Ajax
b . Formas similares a lo que es Ajax
c. Nuestro material para este tutorial
4. El objeto XMLHttpRequest
a. Creando el objeto XMLHttpRequest
b. Métodos
c . Propiedades
5. El proceso Cliente-Servidor
6. Sobre los Ejemplos
7. Nuestro primer tope con AJAX
8. Sintaxis básica para los métodos GET/POST
a . Método GET
b . Método POST
9. Recibiendo los resultados del procesador
a . responseText
b . responseXML
10. Re-renderizando elementos
11. Ejemplos
a . Verificando la existencia de una URL
b . Checkbox Dependientes
c . Lector RSS
d . Otros
Entendiendo AJAX
Por ejemplo en un proceso normal una aplicacion web
recarga o va de una página a otra porque debe enviar una
petición a algun servidor web esta debe procesarla y
mandar el resultado final y el resultado final es la página a
la cual nos dirige la aplicacion o la recarga de la página
misma. En todo esto AJAX hace lo mismo con la diferencia
que lo hace en background osea que realiza todo el proceso
de comunicacion con algun servidor web sin que el usuario
pueda verlo y una vez terminada con éxito solo añadir el
resultado del proceso a la página en curso de esta manera
evitar la recarga o una página receptora de los resultados
del proceso.
Que NO ES Ajax
Ajax no es un script, no es un servidor, no es un archivo, no
es un programa, no es un módulo de apache, no es una
extensión de PHP, NO ES UNA TECNOLOGIA
Entiendase que AJAX no se refiere a usar el objeto
XMLHttpRequest de manera indispensable porque en
realidad AJAX no es una tecnología, sino la unión de varias
tecnologías que juntas pueden lograr cosas realmente
impresionantes como GoogleMaps, Gmail,etc.
El objeto XMLHttpRequest
Como vamos a trabajar con este objeto nativo es
indispensable crearlo caso contrario ni se podrá comenzar
las aplicaciones, partiremos con el objeto desde la creación,
Métodos y propiedades.
Métodos
A continuación los métodos del objeto.
* Propiedades
A continuación las propiedades del objeto.
Código Estado
1 Cargando
2 Cargado, pero sin su contenido incorporado a los objetos
correspondientes
3 Incorporando a los objetos correspondientes
4 Carga completada
Código Valor
200 Completado con éxito
404 No se encontró URL
414 Los valores pasados por GET superan los 512 bytes
o statusText : Mensaje de texto enviado por el servidor
junto al código (status), para el caso de código 200
contendrá "OK".
El proceso Cliente-Servidor
Cuando nuestro cliente se comunica con el servidor este no
recibirá variables para su uso, modificación.
Nuestro objeto XMLHttpRequest al invocarlo y pedir datos a
un servidor lo que recibe es LO QUE EL SERVIDOR SUELTA,
me explico:
<?php <?php
if(isset($_GET['valor']))
{
$_valor=$_GET['valor'];
if($_valor==1)
{
echo "Enviaste el valor 1";
}
elseif ($_valor==2)
{
echo "Enviaste el valor 2";
}
else
{
echo "No enviaste ningun valor ACEPTABLE";
}
}
else
{
echo "No se a enviado valor alguno de peticion";
}
?>
Enviaste el valor 1
Si ponemos http://algo.com/proc.php?valor=2 el archivo
soltará
Enviaste el valor 2
Ejemplo 1
Cliente
<?php <?php
if(isset($_GET['funcion']))
{
$_valor=$_GET['funcion'];
if($_valor=="pt")
{
$_pt="Tu ip:
".htmlspecialchars($_SERVER['REMOTE_ADDR'])."\n";
$_pt.="request_uri:
".htmlspecialchars($_SERVER['REQUEST_URI'])."\n";
$_pt.="date(): ".htmlspecialchars(date("d-m-Y : H-i-s"))."\n";
echo $_pt;
}
else
{
echo "No enviaste ningun valor ACEPTABLE";
}
}
else
{
echo "No se a enviado valor alguno de peticion";
}
?>
Ejecutar ejemplo1:
<?php _objetus=objetus()
<?php _values_send="funcion=pt"
<?php _URL_="proceso.php?"
<?php _objetus.open("GET",_URL_+"&"+_values_send,true);
<?php _objetus.onreadystatechange=function() {
<?php if (_objetus.readyState==4)
{
Llamamos ahora a la propiedad readyState que nos indicará
en que estado se encuentra el proceso, entonces cuando el
estado sea 4 (Terminado) hacemos LO QUE SE NOS OCURRA.
<?php if(_objetus.status==200)
{
<?php window.alert(_objetus.responseText);
<?php }
}
}
_objetus.send(null);
}
proceso.php?funcion=pt
<?php vari=objetus.responseText
<?php window.alert(vari)
# responseXML:
Con esta propiedad el procesador nos devuelve los datos
como XML y debemos recorrerlo mediante las funciones del
DOM (getEementsByTagName, etc).
<?php vari=objetus.responseXML
<serv>
<ip>ip</ip>
<uri>uri </uri>
<date>date</date>
</serv>
Entonces mostraremos:
<?php window.alert(_ip+"\n"+_uri+"\n"+_date)
Ejemplo 1-b
cliente
}
_objetus.send(null);
return
}
</script>
<input type="button" value="con rexponseText"
onclick="primer_tope();"><br>
<input type="button" value="con rexponseXML"
onclick="primer_topeXML();">
procesador
<?php <?php
if(isset($_GET['funcion']))
{
$_valor=$_GET['funcion'];
if($_valor=="pt")
{
$_pt="Tu ip: ".$_SERVER['REMOTE_ADDR']."\n";
$_pt.="request_uri:";
$_pt.=htmlspecialchars($_SERVER['REQUEST_URI'])."\n";
$_pt.="date(): ".date("d-m-Y : H-i-s")."\n";
echo $_pt;
}
elseif ($_valor=="ptxml")
{
$_xml="<?xml version=\"1.0\" standalone=\"yes\"?>\n";
$_xml.="<serv>\n";
$_xml.="<ip>Tu ip: ".$_SERVER['REMOTE_ADDR']."</ip>\n";
$_xml.="<uri>request_uri:";
$_xml.=htmlspecialchars($_SERVER['REQUEST_URI']);
$_xml.="</uri>\n";
$_xml.="<date>".date("d-m-Y : H-i-s")."</date>\n";
$_xml.="</serv>\n";
//mandamemos cabeceras identificando al documento
//como un documento XML
header('Content-Type: text/xml');
echo $_xml;
}
else
{
echo "No enviaste ningun valor ACEPTABLE";
}
}
else
{
echo "No se a enviado valor alguno de peticion";
}
?>
Re-renderizando elementos
Hasta ahora hemos manejado los datos que nos llegaban del
procesador viendolos con un alert (window.alert(respuesta))
pues bien ahora vamos a "embeder" los resultados en
nuestras páginas, tenemos 2 maneras de llamar al elemento
donde se pondrá el nuevo contenido:
document.getElementById("elementID") : Llamaremos al
elemento por el ID
Entonces mostraremos:
<?php window.alert(_ip+"\n"+_uri+"\n"+_date)
Ejemplo 1-b
cliente
<?php target="nombreid";
document.getElementById(target).innerHTML =
_objetus.responseText;
* document.getElementsByTagName("tagName") :
Llamaremos al elemento por su tag name
Ejemplo 2
Solo cambiará nuestro cliente.