最近遇到,如果使用者頻繁點選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 請求失...