教你如何终⽌JQUERY的$.AJAX请求
最近遇到,如果⽤户频繁点击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(jquery ajax例子
//do something
);
var secondTry = setTimeout(function(){alert(‘ok');firstTry.abort()},1000);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论