Javascript: hacer una solicitud GET y analizar la respuesta

Estoy escribiendo un widget de MacOs que tiene que explicar que el autobús llega y recupera información de un sitio web como este:

http://www.5t.torino.it/5t/it/trasporto/arrivi-fermata.jsp

tengo que hacer una solicitud Get y analizar la respuesta ... lo intento con:

var xmlHttp = null;
var theUrl = "http://m.gtt.to.it/m/it/arrivi.jsp?n=876";
xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET",theUrl,false);
xmlHttp.send( null );
xmlDoc=xmlHttp.responseXML;

pero no conozco la estructura del documento, ¿cómo puedo navegar por él?

preguntado el 31 de enero de 12 a las 08:01

Creo que le falta el controlador "onreadystatechange". Se le pedirá que obtenga la respuesta. Entonces puede realizar la operación requerida. Si no conoce la estructura, escriba la respuesta en la consola o alerte o anexe a un elemento div / HTML. -

este es el código en la función sé que necesito un controlador .. -

2 Respuestas

pero no conozco la estructura del documento, ¿cómo puedo navegar por él?

O recorre el árbol y pincha en el tipo de nota y el nombre de nodo de los nodos en él, o examina el documento XML manualmente para aprender la estructura.

Respondido el 31 de enero de 12 a las 13:01

Es mejor hacer que su llamada Ajax sea asincrónica imo haciendo:

xmlhttp.open("GET", theUrl, true);

Esto evitará que sus usuarios interfieran en un molesto período "bloqueado" en su sitio web.

Si lo hace, debe agregar un onreadystatechange handler para que pueda analizar los datos entrantes allí y mostrar los datos que desea mostrar.

xmlhttp.onreadystatechange = function() {
   if (xmlhttp.readyState==4 && xmlhttp.status == 200) {
      var content = xmlhttp.responseText;
      //Parse your content here...
   }
} 

Claramente, debe saber qué datos está recuperando para poder analizarlos. Pero para eso puedes analizar el responseText y encuentra los elementos que siempre contienen tus datos. Luego, simplemente recupere los valores de esos <html> etiquetas y mostrarlo en consecuencia.

Por ejemplo, si desea recuperar los datos en un <label> con id establecido en hora de llegada hacer:

content.getElementById('arrival-time').innerHTML;

Respondido 01 Feb 12, 13:02

Por horrible que sea, la solicitud está configurada como síncrona, por lo que no es necesario estar atento a que cambie el estado listo. HTMLElementNodes no tiene un text método. - Quentin

Cambié el texto a innerHTML () hace años. Actualice su página antes de comentar. :) - Jules

innerHTML tampoco es un método. - Quentin

muchas gracias por la respuesta, pero no puedo visualizar la estructura, ¿hay un método para almacenar la respuesta xml en el disco? - Luigi Tagliamonte

@LuigiTagliamonte ¿Qué quieres decir con que no puedes visualizar la estructura? Simplemente analice el HTML que recupera y busque los elementos que contienen los valores que desea utilizar. - Jules

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.