教你如何終止JQUERY的$.AJAX請(qǐng)求
最近遇到,如果用戶頻繁點(diǎn)擊ajax請(qǐng)求,有兩個(gè)問題:
1,如果連續(xù)點(diǎn)擊了5個(gè)ajax請(qǐng)求,前4個(gè)其實(shí)是無效的,趁早結(jié)束節(jié)省資源。
2,更嚴(yán)重的問題是:最后一個(gè)發(fā)送的請(qǐng)求,響應(yīng)未必是最后一個(gè),有可能造成混亂。還需要一個(gè)隊(duì)列來維護(hù)發(fā)送的請(qǐng)求和響應(yīng)。
我其實(shí)已經(jīng)設(shè)計(jì)好了該隊(duì)列的實(shí)現(xiàn)方式,后來發(fā)現(xiàn)jQuery直接通過abort方法,這樣就不需要那么復(fù)雜的實(shí)現(xiàn)了,畢竟還有其他事情等著完成。
用jquery發(fā)送ajax請(qǐng)求的確是太方便了,$.get、$.post、$.ajax等等,但我們有時(shí)候需要中途中止ajax請(qǐng)求。
舉個(gè)例子,用comet做聊天時(shí),發(fā)送一個(gè)請(qǐng)求后,服務(wù)端通常過幾十秒后才會(huì)刷新鏈接、返回?cái)?shù)據(jù)。假設(shè)服務(wù)端是30秒刷新一次鏈接,如果我們?cè)?0秒時(shí)想要停止這個(gè)ajax請(qǐng)求,怎么辦呢?
先上代碼,后面再解釋
var ajaxGet = $.get(“comet_server.php”,{id:1},function(data){
….//一些操作
});
ajaxGet.abort();
上面這段代碼其于兩個(gè)知識(shí)點(diǎn):
1. $.get返回的數(shù)據(jù)類型是XMLHttpRequest,請(qǐng)參考手冊(cè)。($.post、$.ajax、$.getJSON、$.getScript也同樣)
2. XMLHttpRequest對(duì)象有abort()方法
注意:abort()后,ajax請(qǐng)求立即停止,但還是會(huì)執(zhí)行后面的function()。如果想避免執(zhí)行其中的操作,可以在function()開始位置加判斷
var ajaxGet = $.get(“comet_server.php”,{id:1},function(data){
if(data.length == 0) return true;
….//一些操作
});
ajaxGet.abort();
終止ajax請(qǐng)求:
var request = $.get(“ajax.aspx”,{id:1},function(data){
//do something
});
//終止請(qǐng)求動(dòng)作.
request.abort();
防止重復(fù)請(qǐng)求:
var request;
if(request != null)
request.abort();
request = $.get(“ajax.aspx”,{id:1},function(){
//do something
});
ajax & setTimeout實(shí)現(xiàn) secondTry 在等待一秒之后將firstTry的ajax終止:
var firstTry = $.ajax(
//do something
);
var secondTry = setTimeout(function(){alert(‘ok');firstTry.abort()},1000);
- JQuery的Ajax請(qǐng)求實(shí)現(xiàn)局部刷新的簡單實(shí)例
- jquery的ajax異步請(qǐng)求接收返回json數(shù)據(jù)實(shí)例
- 跨域請(qǐng)求之jQuery的ajax jsonp的使用解惑
- jquery ajax請(qǐng)求方式與提示用戶正在處理請(qǐng)稍等
- 為jquery的ajax請(qǐng)求添加超時(shí)timeout時(shí)間的操作方法
- jQuery.ajax 跨域請(qǐng)求webapi設(shè)置headers的解決方案
- Jquery ajax請(qǐng)求導(dǎo)出Excel表格的實(shí)現(xiàn)代碼
- Jquery Ajax請(qǐng)求文件下載操作失敗的原因分析及解決辦法
- 淺析jQuery Ajax請(qǐng)求參數(shù)和返回?cái)?shù)據(jù)的處理
- jQuery中ajax的相關(guān)知識(shí)點(diǎn)匯總
相關(guān)文章
jquery.validate表單驗(yàn)證插件使用詳解
這篇文章主要為大家詳細(xì)介紹了jquery.validate表單驗(yàn)證插件的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
jQuery實(shí)現(xiàn)的表格展開伸縮效果實(shí)例
這篇文章主要介紹了jQuery實(shí)現(xiàn)的表格展開伸縮效果,結(jié)合完整實(shí)例形式分析了jQuery響應(yīng)鼠標(biāo)事件動(dòng)態(tài)修改頁面元素的相關(guān)技巧,需要的朋友可以參考下2016-09-09
jQuery Raty 一款不錯(cuò)的星級(jí)評(píng)分插件
一款不錯(cuò)的星級(jí)評(píng)分插件,這篇文章主要介紹了jQuery Raty星級(jí)評(píng)分插件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
jquery dataTable 后臺(tái)加載數(shù)據(jù)并分頁實(shí)例代碼
本篇文章主要介紹了jquery dataTable 后臺(tái)加載數(shù)據(jù)并分頁實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-06-06
基于JQuery 滑動(dòng)與動(dòng)畫的說明介紹
本篇文章小編為大家介紹,基于JQuery 滑動(dòng)與動(dòng)畫的說明介紹。需要的朋友參考下2013-04-04
jQuery 1.4 15個(gè)你應(yīng)該知道的新特性(譯)
jQuery 1.4 最近剛剛發(fā)布. 這個(gè)版本可不是一個(gè)簡單的改進(jìn),它不僅包含了很多新的特性,還改進(jìn)了很多功能, 更在性能優(yōu)化方面下了很大功夫, 本文將對(duì)這些新的特性和增強(qiáng)的部分進(jìn)行討論,希望能對(duì)你有所幫助.2010-01-01

