2014-02-12 64 views
2

我有支持長輪詢的REST webservices。如果服務器有任何新的數據,它會發送給我,如果我提出了Jquery Ajax請求。如果沒有來自服務器的更新,請求將處於未決狀態。現在,如果用戶突然註銷,我想取消該請求。我嘗試像如何取消未完成的Jquery Ajax調用?

var request=$.ajax({ 
-------- 
- 
------- 
}); 

request.abort(); 

但我在這裏得到錯誤,因爲請求沒有收到任何數據從服務器(原因仍處於掛起狀態)。所以它是'空'。

如何取消該Ajax請求?

+1

每個人似乎都在暗示你在做什麼是正確的,看到這裏可能重複: http://stackoverflow.com/questions/446594/abort-ajax-requests -using-jquery 如果你想在一段時間後中止,你也可以設置請求的超時時間。 – DrLivingston

回答

0

abort被jquery視爲錯誤,因此您需要檢查失敗處理程序中的jqXHR statusText,以確定它是否已被中止並進行相應處理。

這裏的代碼來說明:

var jqXHR = $.ajax({ 
    url: '...' 
}); 

// jqXHR.abort() is regarded as an error, so your logic for detecting 
// it should go in the fail handler. Here's how you could set this up: 
jqXHR.fail(function(args) { 
    if (jqXHR.statusText == 'abort') { 
     console.log('AJAX aborted'); 
     return; 
    } 

    // Other error processing goes here. 

}); 

// If pending, abort AJAX call 
if (jqXHR.state() == 'pending') { 
    jqXHR.abort(); 
} 
相關問題