Hola!
Ya tengo mi parte de AJAX funcionando, sin embargo me quedan varias dudas. Antes había visto un intento de crear un objeto para cada navegador. Con el siguiente código ya funciona para todos (almenos firefox, IE y chrome)? Como es eso?
Código:
function getdata(what, where) { // get data from source (what)
try {
xmlhttp = window.XMLHttpRequest?new XMLHttpRequest():
new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) { alert("Error loading data. Try another browser, please. Thank you for your patience.");
}
Otra cosa... Esto es de JS, pero bueno. Qué significa el "?" cuando hacemos "window.XMLHttpRequest?new XMLHttpRequest():" ?
Y luego por último... Hay alguna línea del código que no entiendo:
Código:
document.getElementById(where).innerHTML ="<center><img src='ajax-loader.gif'></center>"; // Gif while loading data
ajaxdestination=where;
xmlhttp.onreadystatechange = lanzamos_funcion; // when request finished, call the function to put result to destination DIV
xmlhttp.open("GET", what);
xmlhttp.send(null);
return false;
}
function lanzamos_funcion() { // put data returned by requested URL to selected DIV
if (xmlhttp.readyState == 4) if (xmlhttp.status == 200)
document.getElementById(ajaxdestination).innerHTML =xmlhttp.responseText;
}
Entiendo que innerHTML es para qué queremos cargar mientras devolvemos lo buscado. Pero no entiendo el:
onreadystatechange = lanzamos_funcion; //onready... Es predefinido?
xmlhttp.open("GET", what); //Podria ser POST y concatenar algo a la URL? Sólo lee, o ejecuta la página "what" y el resultado por pantalla es lo que devuelve?
xmlhttp.send(null); // Y esto?
ni la funcion "lanzamos_funcion". // Estado 4 significa que hemos terminado la petición... de qué? y status 200??
Cómo veis ya me funciona pero me gustaría entender claramente los conceptos :) Mil gracias!