2012-11-26 53 views
-6

我是Java和JavaScript中的新手,我一直在尋找一種方法來獲取HTTPResponse,使用.indexOf方法解析.responseText以取得我需要的屬性,之後將此值顯示在表格行I的單元格中已經在html頁面中創建。有沒有辦法在每次獲得httpresponse時更換此單元格?如何將http響應解析爲字符串?

非常感謝。

var xHRObject = new XMLHttpRequest(); 
var url = "http://meteovarkiza.gr/"; 
xHRObject.open("GET", url, true); 
xHRObject.send(); 
xHRObject.onreadystatechange = function() { 
if (xHRObject.readyState==4 && xHRObject.status==200) { 
    var response = xHRObject.responseText; 
    var startIndex = response.indexOf("Temperature"); 
    startIndex += 70; 
    var subResponse = response.slice(startIndex, startIndex + 4);     
      alert(subResponse); 
    } 
} 
+7

*「有沒有辦法?」 - 是的 – Joseph

+4

這與Java有什麼關係? –

+5

[你有什麼嘗試?](http://whathaveyoutried.com) – tjameson

回答

0

「我曾嘗試創建一個對象,藉此價值,但在那之後,我不能在HTML表格中顯示它。」

你的問題不是很清楚,但你似乎是在說,你是成功的得到你需要走出響應文本,進入subResponse變量的特定值,但你不知道如何將該值放入頁面上的特定元素。

如果是的話,最簡單的方法就是給該元素的id

<td id="resultCell"></td> 

然後做在您的JS:

document.getElementById("resultCell").innerHTML = subResponse; 

在你的問題的標題,你說:

「如何將http響應解析爲字符串?」

......但你似乎已經想通了。如果你無法控制響應格式,那麼我猜想正則表達式技巧和/或.indexOf().slice()(或.substr()可能會更好,因爲在你的情況下,你總是指定4個字符)的組合。

如果您可以設置響應的格式,您可能會返回一個JSON字符串好得多,因爲那樣您可以使用JSON.parse()來獲得具有直接可訪問屬性的對象 - 不再需要處理字符串操作。

+0

非常感謝nnnnnn。是的,這正是我的意思。 更進一步:我怎樣才能定期觸發請求,即每隔2分鐘? – user1852114

+0

把你的代碼放在一個函數中,例如我們可以說'function refreshTemperature()',然後你可以說'setInterval(refreshTemperature,120000)'每1200000毫秒自動調用一次函數。或者從函數的末尾使用'setTimeout(refreshTemperature,120000)',這樣每次運行它都會調度另一次呼叫。請注意,在'setInterval()'調用'refreshTemperature'後面沒有'()'。 MDN有更多的[關於'setInterval()']的信息(https://developer.mozilla.org/en-US/docs/DOM/window。setInterval)和'setTimeout()'。 – nnnnnn

+0

太棒了!非常感謝! – user1852114