国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

教你如何終止JQUERY的$.AJAX請(qǐng)求

2019-11-20 10:32:01
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

最近遇到,如果用戶頻繁點(diǎn)擊ajax請(qǐng)求,有兩個(gè)問(wèn)題:

1,如果連續(xù)點(diǎn)擊了5個(gè)ajax請(qǐng)求,前4個(gè)其實(shí)是無(wú)效的,趁早結(jié)束節(jié)省資源。

2,更嚴(yán)重的問(wèn)題是:最后一個(gè)發(fā)送的請(qǐng)求,響應(yīng)未必是最后一個(gè),有可能造成混亂。還需要一個(gè)隊(duì)列來(lái)維護(hù)發(fā)送的請(qǐng)求和響應(yīng)。

我其實(shí)已經(jīng)設(shè)計(jì)好了該隊(duì)列的實(shí)現(xiàn)方式,后來(lái)發(fā)現(xiàn)jQuery直接通過(guò)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ù)端通常過(guò)幾十秒后才會(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);

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 抚宁县| 永嘉县| 资源县| 莲花县| 维西| 清徐县| 平阳县| 太仆寺旗| 磴口县| 英吉沙县| 松溪县| 资兴市| 武陟县| 茌平县| 龙游县| 通辽市| 台州市| 疏勒县| 屏山县| 仪征市| 大关县| 大庆市| 信宜市| 司法| 根河市| 长子县| 临泉县| 城口县| 隆昌县| 仁寿县| 公安县| 连江县| 宾阳县| 砀山县| 北海市| 长汀县| 乐安县| 双牌县| 遵义市| 舞钢市| 永城市|