在我的網站上,我使用了一個長輪詢jQuery ajax函數。此函數中的這個ajax調用有50秒超時,然後再次運行,等待服務器上的更改。檢查ajax調用/ http連接是否爲當前活動
但是,有時長輪詢http連接停止。例如,當互聯網連接關閉或客戶端電腦在休眠或休眠後打開時發生這種情況。問題在於「完成」回調沒有發生,$ .ajax()函數仍在等待超時,而http連接不再存在。
如果連接仍處於打開狀態,如何檢查jquery/javascript?
這是我的長輪詢腳本:
function longPoller() {
$.ajax({
type: "GET",
url: '/longpolltest2.php',
dataType: 'json',
async: true,
cache: false,
timeout:50000, /* Timeout in ms */
success: function(data){
alert('success');
},
error: function(XMLHttpRequest, textStatus, errorThrown){
alert('error');
},
complete: function() {
alert('complete');
longPoller(); // restart long poller request
}
});
}
@jAndy,我已經更新了劇本,但我收到以下錯誤:
權限遭拒,http://domain.com爲對象創建包裝類UnnamedClass
function masterLongPollerDebugger() {
xhr = $.ajax({
type: "GET",
url: '/longpolltest2.php',
dataType: 'json',
async: true,
cache: false,
timeout:50000,
success: function(data){
alert('success');
},
error: function(XMLHttpRequest, textStatus, errorThrown){
alert('error');
},
complete: function() {
alert('complete');
masterLongPollerDebugger();
}
});
}
function ajaxRunning() {
xhr._onreadystatechange = xhr.onreadystatechange; // store a reference
xhr.onreadystatechange = function()
{ // overwrite the handler
xhr._onreadystatechange(); // call the original stored handler
alert(xhr.readyState);
if (xhr.readyState === 3)
alert('Interactive');
};
}
我已更新原始帖子以獲取更多信息。我得到一個錯誤:**拒絕http://domain.com爲UnnamedClass類的對象創建包裝的權限** – koen 2010-09-15 10:33:08