最近,如果
用户频繁点击Ajax请求,有两个问题:
1,如果在4之前
连续单击5 Ajax请求无效,则
关闭保存资源。
2,更严重的问题是:最后一个发送请求,响应不一定是最后一个请求,它很可能会造成混乱。
实际上,我设计了队列的实现,后来
发现jQuery直接通过了中止
方法,所以它不需要如此复杂地实现。毕竟,还有其他事情等着我们去做。
用Ajax、ajax、$、SQL、ajax等方式发送Ajax请求非常方便,但有时我们需要中途停止Ajax请求。
例如,当一个彗星用于
聊天时,
服务器通常在发送请求刷新链接并返回数据后需要几十秒。假设服务器在30秒内刷新一个链接,如果我们想在10秒内停止Ajax请求,该怎么办
从代码开始,然后再解释它。
无功ajaxget =美元。得到(comet_server.php,{ 1 },ID:
功能(数据){ {)
……/
操作 });
AjaxGet.abort();
上面的代码部分在两个知识点上:
1返回的数据
类型。美元。得到的是XMLHttpRequest,请参阅手册。(美元。后,美元。Ajax,美元。getJSON,美元。getscript是相同的)
2。XMLHttpRequest对象已中止()方法
注意:在中止()之后,Ajax请求立即停止,但它仍然
执行后面的
函数()。如果您想避免执行操作,可以判断函数的开始()
无功ajaxget =美元。得到(comet_server.php,{ 1 },ID:功能(数据){ {)
如果(data.length = = 0)返回true;
……/操作
});
AjaxGet.abort();
终止Ajax请求:
无功要求=美元。得到(ajax.aspx,{ 1 },ID:功能(数据){ {)
做某事
});
请求终止操作。
Request.abort();
防止重复请求:
无功的要求;
如果(请求)!= null)
Request.abort();
请求=美元。得到(ajax.aspx,{ 1 },ID:功能()){
做某事
});
Ajax的setTimeout实现secondtry终止firsttry的Ajax后的第二个
等待:
无功firsttry Ajax(=美元。
做某事
);
无功secondtry = setTimeout(){ alert(功能(好的);firsttry.abort()},1000);