2012-01-31 184 views
-1

我正在寫有解釋總線MacOS的窗口小部件從到達這樣一個網站retrive信息:的Javascript:做一個GET請求並解析響應

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

我必須做出一個Get請求並解析響應..我嘗試:

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; 

但我不知道文件的結構如何才能導航它?

+0

,我認爲你缺少「onreadystatechange的」處理程序。它將被要求得到迴應。然後您可以執行所需的操作。如果您不知道結構,請將響應寫入控制檯或將其警告或附加到div/HTML元素。 – 2012-01-31 08:47:15

+0

這是函數中的代碼,我知道我需要一個處理程序.. – 2012-01-31 10:31:35

回答

-1

這是更好地做,以使您的Ajax調用異步IMO:

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

這將阻止用戶干擾您的網站上惱人的「封殺」的時期。

如果你這樣做,你必須添加一個onreadystatechange處理程序,以便您可以在那裏解析輸入數據並顯示你要顯示的數據。

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

很明顯,您必須知道您正在檢索哪些數據才能解析它。但是,你可以只分析responseText,發現總是包含您的數據的元素。然後只需檢索那些<html>標記的值,並相應地顯示出來。

舉例來說,如果你想檢索與ID設置在<label>的數據到達時刻做:

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

儘管它很糟糕,但是請求被設置爲同步,因此不需要注意準備就緒狀態。 HTMLElementNodes沒有'text'方法。 – Quentin 2012-01-31 09:20:30

+0

我在之前將文本更改爲innerHTML()。請在評論前刷新您的頁面。 :) – Jules 2012-01-31 09:23:52

+0

'innerHTML'也不是一種方法。 – Quentin 2012-01-31 09:33:26

0

,但我不知道的文件我怎麼能做到結構導航它?

您既可以遍歷樹,也可以戳記其中節點的註釋類型和節點名稱,也可以手動檢查XML文檔以瞭解結構。