Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Diferentes navegadores y entender el código

Estas en el tema de Diferentes navegadores y entender el código en el foro de Frameworks JS en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/12/2008, 11:48
 
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!
  #2 (permalink)  
Antiguo 29/12/2008, 12:11
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Diferentes navegadores y entender el código

Cita:
Otra cosa... Esto es de JS, pero bueno. Qué significa el "?" cuando hacemos "window.XMLHttpRequest?new XMLHttpRequest():" ?
Quiere decir que si existe el método window.XMLHttpRequest, se crea un nuevo objeto de ese tipo, y si no existe, se crea un objeto ActiveXObject("Microsoft.XMLHTTP")

Es equivalente a hacer lo siguiente:
Código javascript:
Ver original
  1. if (typeof window.XMLHttpRequest !== undefined) {
  2.     xmlhttp = new XMLHttpRequest();
  3. } else {
  4.     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  5. }

Esto es necesario porque todos los navegadores que soportan esto (con excepción del IE) lo hacen implementando window.XMLHttpRequest. Mientras que el IE lo implementa mediante un objeto ActiveX.

Para las demás preguntas, que veo son bastante básicas, te recomiendo revisar las http://www.forosdelweb.com/f77/faqs-...o-ajax-332366/. Ahí seguro encontrás mucha información y tutoriales básicos que podés seguir.


Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:47.