Documente Academic
Documente Profesional
Documente Cultură
INDICE
Este esquema nos permite desarrollar aplicaciones web que interactúan con el
cliente a través de formularios. En la mayoría de los casos estas aplicaciones
lanzan consultas a Mysql y el resultado de esa consulta es expresado en
formato HTML a través del motor PHP.
1
formulario enviado al motor PHP. Sin embargo, esta forma de acceder implica
un notable intercambio de información entre servidor-cliente.
El cliente solicita una página web al servidor, éste se la envía y en dicha página
hay un objeto (normalmente un botón) que realiza una conexión asíncrona al
servidor solicitando un fichero XML con los datos. El código javascript de la
página dispone de las instrucciones necesarias para procesar dicho fichero.
Cuando el cliente pulsa dicho botón se lanza la petición y, una vez recibido el
fichero XML, se ejecutan las consultas requeridas.
2
var req = new XMLHttpRequest();
Propiedades.
1.- readyState
xmlhttp.onreadystatechange = function () {
alert(xmlhttp.readyState);
};
Si todo ha ido bien, devolverá 4. La llamada a este método se hace detrás del
método open() y antes del método send().
2.- responseText
Se le indica que la respuesta debe ser de tipo de texto y, por tanto, guardarlo
en una variable de tipo string.
3.- responseXML
Estamos indicando que el objeto debe ser enviado como un documento XML.
4.- Status
200 – OK
403 – Prohibido
404 – No encontrado
Por ejemplo,
alert(xmlhttp.status);
3
tendría como resultado
Por tanto, una buena forma de controlar si nuestra conexión asíncrona ha sido
un éxito es chequear esta propiedad
if (xmlhttp.status==200)
alert("Fichero Recibido");
else alert("Error en la conexión");
Abre una conexión asíncrona con el servidor. El parámetro método puede ser
GET o POST. La url se refiere el fichero que queremos descargar.
2.- send()
4
3.- Listado de un fichero XML
<html>
<script>
function conectar(){
if (window.XMLHttpRequest)
{
// Objeto para IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
xmlhttp.open("GET","coches1.xml",false);
xmlhttp.send();
if(xmlDoc=xmlhttp.responseXM)
alert(“Fichero Recibido”);
else
alert("Error en la conexión");
}
</script>
<body>
<input type="button" value="BUSCAR" onClick="conectar()">
</body>
</html>
5
En caso de error, por ejemplo que no exista el fichero, se mostrará
document.write(xmlDoc);
obtendremos
6
var l=coches.length;
var cadena= "Hay " + l +" Registros";
alert(cadena);
var coches=xmlDoc.getElementsByTagName("Coche");
marca=coches[1].getElementsByTagName("MARCA")[0].childNodes[0].nodeValue;
alert(marca);
7
("MARCA")[0].
2.- MARCA sigue siendo una etiqueta, no podemos mostrarla. Lo que debemos
mostrar es el primer hijo de esta etiqueta (que es el texto incluido en ella) y en
concreto su propiedad nodeValue.
Con esto mostramos la etiqueta MARCA del segundo elemento del array
Coches. Si quisiéramos mostrar todas las etiquetas del array tendríamos que
meternos en un bucle.
var coches=xmlDoc.getElementsByTagName("Coche");
var l=coches.length;
for(i=0;i<l;i++){
marca=coches[i].getElementsByTagName("MARCA")[0].childNodes[0].nodeValue;
cadena=marca + "<br>";
document.write(cadena );}
Por último, vamos a mostrar los resultados en forma de tabla mostrando varios
campos de cada registro. También he añadido una variable contador j que
inicialmente vale 0 pero que se incrementa en cada iteración.
var coches=xmlDoc.getElementsByTagName("Coche");
var l=coches.length;
cadena="<table border='1'>";
document.write(cadena);
var j=0;
for (i=0;i<l;i++){
j++;
marca=coches[i].getElementsByTagName("MARCA")[0].childNodes[0].nodeValue;
modelo=coches[i].getElementsByTagName("MODELO")[0].childNodes[0].nodeValue;
precio=coches[i].getElementsByTagName("PRECIO")[0].childNodes[0].nodeValue;
cadena="<tr><td>" +j + "</td><td>" + marca + "</td><td>" + modelo + "</td><td>" +
precio + "</td></tr>";
document.write(cadena);
}
cadena="</table>";document.write(cadena);
El resultado es el siguiente
8
9