Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
https://www.youtube.com/playlist?list=PLK7sa90aSLe74eFKxktrvzMeXA1zilxaT
Ajax viene de Asynchronous JavaScript and XML. Es una técnica que sirve para:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Curso de Ajax</title>
</head>
<body>
<script>
</script>
</body>
</html>
Usando Ajax visualizaremos este mensaje en la pantalla sin necesidad de recargarla. Iniciamos creando un <button>
y agregándole un evento onclick(), el cual ejecutará la función ejecutarAjax(). Debajo del botón crearemos un <div>
con un id=”mensaje” para mostrar el mensaje.
<body>
<button onclick="ejecutarAjax();">Mostrar Mensaje</button>
<div id="mensaje"></div>
<script>
</script>
</body>
En el <script> creamos la función ejecutarAjax(). Dentro de la función declaramos una variable (cualquier nombre)
que aquí llamaremos ajaxRequest. Luego debajo verificamos el tipo de navegador usando en un if
window.XMLHttpRequest para navegadores modernos e iniciar el objeto; para navegadores antiguos e internet
Explorer usamos el else utilizando ActiveXObject.
<script>
function ejecutarAjax() {
// inicia el objeto XMLHttpRequest dependiendo del navegador
var ajaxRequest;
if (window.XMLHttpRequest) {
ajaxRequest = new XMLHttpRequest();
} else {
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
}
</script>
Ahora usaremos el objeto ajaxRequest junto con la propiedad onreadystatechange que se encargará de procesar la
respuesta enviada por el servidor. Agregamos una función anónima y adentro un condicional if como sigue:
<script>
function ejecutarAjax() {
// inicia el objeto XMLHttpRequest dependiendo del navegador
var ajaxRequest;
if (window.XMLHttpRequest) {
ajaxRequest = new XMLHttpRequest();
} else {
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
ajaxRequest.onreadystatechange = function() {
if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
}
}
}
</script>
ajaxRequest.onreadystatechange = function() {
if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
document.getElementById("mensaje").innerHTML =
ajaxRequest.responseText;
}
Los parámetros de open() son el tipo de método (tipo de petición), la dirección del servidor (como en este caso es
solo un documento, escribimos solo el nombre del documento), y true si queremos que la comunicación sea
asíncrona (sin recargar la pantalla). Finalmente llamamos al método send() para enviar la petición.
{
"nombre": "Juan",
"apellido": "Hernández",
"edad": "28"
}
Creamos un index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Curso de Ajax</title>
</head>
<body>
<script>
</script>
</body>
</html>
Ahora creamos un <button> con el evento onclick(), que ejecutará la función obtenerJson(). Debajo creamos un <div
id=”info”> donde se mostrará la información del JSON.
<body>
<button onclick="obtenerJson();">Mostrar Mensaje</button>
<div id="info"></div>
<script>
</script>
</body>
function obtenerJson() {
var xmlhttp;
// obtenemos el objeto en base al navegador
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
}
}
Del ejemplo anterior, con ajaxRequest.responseText obtenemos la información como una cadena, pero
necesitamos convertirla a un objeto de JSON usando el método JSON.parse(), luego lo almacenamos en una variable.
Luego para ver los datos de la variable podemos usar console.log().
// utilizamos el objeto para ejecutar la petición de Ajax
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var datos = JSON.parse(xmlhttp.responseText);
console.log(datos);
}
}
Guardamos y testeamos:
Bien, ahora nuestro propósito es mostrar la información en la pantalla, para ello recordemos que toda la
información se almacena en la variable datos, por lo cual podemos iterar sobre ella. Fuera y arriba de la función
obtenerJson() creamos una referencia (div) a nuestro <div> que mostrará la información.
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var datos = JSON.parse(xmlhttp.responseText);
for (var i in datos) {
myDiv.innerHTML += (i + ": " + datos[i] + "<br/>")
}
}
}
Guardamos y testeamos:
Si hacemos clic varias veces en el botón, se nos agregará la misma información continuamente. Para evitar esto
agregamos un if exterior al for que valide si el <div> se encuentra vacío; si esto es así entonces que se muestre la
información, sino que no se muestre.
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var datos = JSON.parse(xmlhttp.responseText);
if (myDiv.innerHTML == "") {
for (var i in datos) {
myDiv.innerHTML += (i + ": " + datos[i] + "<br/>")
}
}
}
}