首頁 > web前端 > js教程 > 主體

教你如何終止JQUERY的$.AJAX請求_jquery

WBOY
發布: 2016-05-16 15:14:20
原創
1161 人瀏覽過

最近遇到,如果使用者頻繁點擊ajax請求,有兩個問題:

1,如果連續點擊了5個ajax請求,前4個其實是無效的,趁早結束節省資源。

2,更嚴重的問題是:最後一個發送的請求,回應未必是最後一個,有可能造成混亂。還需要一個佇列來維護發送的請求和回應。

我其實已經設計好了該佇列的實作方式,後來發現jQuery直接透過abort方法,這樣就不需要那麼複雜的實作了,畢竟還有其他事情等著完成。

用jquery發送ajax請求的確是太方便了,$.get、$.post、$.ajax等等,但我們有時候需要中途中止ajax請求。

舉個例子,用comet做聊天時,發送一個請求後,服務端通常過幾十秒後才會刷新連結、回傳資料。假設服務端是30秒刷新一次鏈接,如果我們在10秒時想要停止這個ajax請求,怎麼辦呢?

先上程式碼,後面再解釋

var ajaxGet = $.get(“comet_server.php”,{id:1},function(data){
….//一些操作
});
ajaxGet.abort();

登入後複製

上面這段程式碼其於兩個知識點:

1. $.get回傳的資料類型是XMLHttpRequest,請參考手冊。 ($.post、$.ajax、$.getJSON、$.getScript也一樣)

2. XMLHttpRequest物件有abort()方法

注意:abort()後,ajax要求立即停止,但還是會執行後面的function()。如果想避免執行其中的操作,可以在function()開始位置加判斷

var ajaxGet = $.get(“comet_server.php”,{id:1},function(data){
if(data.length == 0) return true;
….//一些操作
});
ajaxGet.abort();

登入後複製

終止ajax請求:

var request = $.get(“ajax.aspx”,{id:1},function(data){
  //do something
});
//终止请求动作.
request.abort();

登入後複製

防止重複要求:

var request;
if(request != null)
  request.abort();
request = $.get(“ajax.aspx”,{id:1},function(){
  //do something
});
ajax & setTimeout实现 secondTry 在等待一秒之后将firstTry的ajax终止:
var firstTry = $.ajax(
 //do something
 );
var secondTry = setTimeout(function(){alert(‘ok');firstTry.abort()},1000);
登入後複製

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板