我玩弄生XmlHttpRequestObjects +彗星長輪詢一點點。 (通常情況下,我讓GWT或這對我來說另一個框架處理,但我想更多地瞭解它)彗星(長輪詢)和XMLHttpRequest的狀態
我寫了下面的代碼:
function longPoll() {
var xhr = createXHR(); // Creates an XmlHttpRequestObject
xhr.open('GET', 'LongPollServlet', true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
...
}
if (xhr.status > 0) {
longPoll();
}
}
}
xhr.send(null);
}
...
<body onload="javascript:longPoll()">...
我包裹longPoll()
呼叫if語句檢查status > 0
,因爲我遇到過,當我離開頁面時(通過瀏覽其他地方或重新加載),發送最後一次不必要的彗星電話。 [和在Firefox,它做了重新加載頁面時,由於某種原因,我不完全瞭解,甚至還造成嚴重的問題。]
問:那是status
檢查正確的方式來處理這個問題,還是有更好的解決方案?
你不能只是看任何現有的實現,例如像你提到的GWT,jquery等? – fig 2010-04-12 19:07:54
@無花果gnuton:我不知道,如果它真的很容易。如果你有足夠的知識能夠與原始XHR發揮遵循生成的JavaScript代碼(我不是一個JavaScript大師...) – 2010-04-12 19:24:44
,你會查看Jquery或其他庫不會有任何問題。他們有完整的源代碼版本。 – fig 2010-04-12 19:34:52