Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/12/2008, 11:48
samy4ever
 
Fecha de Ingreso: agosto-2008
Mensajes: 143
Antigüedad: 16 años, 3 meses
Puntos: 1
Diferentes navegadores y entender el código

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!