終止jQuery的 ajax方法abort

2022-05-04 19:12:19 字數 1259 閱讀 6116

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

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

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

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

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

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

先上**,後面再解釋

1var ajaxget = $.get("comet_server.php",,function(data));

4ajaxget.abort();

上面這段**其於兩個知識點:

1. $.get返回的資料型別是xmlhttprequest,請參考手冊。($.post、$.ajax、$.getjson、$.getscript也同樣)

2. xmlhttprequest物件有abort()方法

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

view sourceprint?

1var ajaxget = $.get("comet_server.php",,function(data));

5ajaxget.abort();

終止ajax請求:

var request = $.get("ajax.aspx",,function(data));

//終止請求動作.

request.abort();

防止重複請求:

var request;

if(request != null)

request.abort();

request = $.get("ajax.aspx",,function());

ajax & settimeout實現 secondtry 在等待一秒之後將firsttry的ajax終止:

var firsttry  = $.ajax(

//do something

);var secondtry = settimeout(function(),1000);

jQuery封裝ajax的方法

引數有4個,必填引數是url位址,其他引數都是選填引數,可以沒有,引數的形式是物件形式。get 引數有4個,必填引數是url位址,其他引數都是選填引數,可以沒有,引數的形式是物件形式。post 請求成功時執行的函式 有n個引數,預設請求方式是 get 方式 ajax 傳參引數,必須是物件形式,dat...

jQuery封裝ajax的方法

最近在逆戰班學習了jquery,這裡學一些jquery封裝ajax的方法,jquery封裝ajax原理和原生js是一樣的,只是用的是封裝好的方法,具體有三種方式。1,get 方法 從字面意義就可以看出是get請求方法 有4個引數,必填引數是 url位址 其他引數都是選填引數,可以沒有 引數的形式是物...

jquery呼叫ajax方法

格式一 ajax 引數 type 請求方式get post url 請求位址url async 是否非同步,預設是true表示非同步 data 傳送到伺服器的資料 datatype 預期伺服器返回的資料型別 contenttype 設定請求頭 success 請求成功時呼叫此函式 error 請求失...