如何取消 Ajax 请求?

15

在PhoneGap中,如何取消一个AJAX请求?我想设置一个取消按钮来控制请求,当它太慢时取消请求。

$.ajax({
    type: "GET",
    url: url,
    success: function(m) {
        alert( "success");
    }
});
3个回答

9

嗨,这个问题与使用jQuery中止Ajax请求类似。总之,这可以帮助您。

 var ab = $.ajax({  type: "GET",  url: url,  success: function(m)  {    alert( "success");  } });

//kill the request
ab.abort()

6

将从ajax请求返回的promise接口存储在一个全局变量中,并在取消点击时中止它。

var result = $.ajax({  type: "GET",  url: url,  success: function(m)  {    alert( "success");  } });


$('#cancel').click(function() {
    result.abort();
});

请问您能否详细说明一下? - Tuhin
你可以将结果存储在“全局”变量中,并在按钮调用时“中止”请求。 - Manoj Yadav
6
你没有存储返回结果,而是存储了返回的延迟承诺,并且它公开了具有abort方法的本地XMLHttpRequest。 - adeneo
@adeneo 谢谢你纠正我。 - Manoj Yadav

2
var request= $.ajax({  type: "GET",  url: url,  success: function(m)  {    alert( "success");  } });


$('#cancel').click(function() {
    request.abort();
});

这将会中止客户端(浏览器)的请求,但请注意:如果服务器已经接收到该请求,则可能会继续处理该请求(取决于服务器平台),即使浏览器不再等待响应。没有可靠的方法可以停止正在进行中的请求的处理。


等一下,这与已发布的答案有什么不同吗???编辑:你提到服务器无法处理它的话很有意思。 - A. Wolff
我刚才解释了,仅此而已。操作者应该知道实际会发生什么,而不仅是如何实现。 - Tuhin
是的,我编辑了我的先前评论,我非常同意这里的观点! - A. Wolff
我没有提到那种词语.... :) - Tuhin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接