取消服务器已收到的AJAX调用

时间:2015-03-16 08:38:26

标签: javascript jquery ajax

我知道这个问题在Stack上经常被问到,但我似乎没有从所有问题中得到一个有效的答案。

问题"如何中止AJAX通话?"主要通过以下解决方案回答(我使用jQuery):

var call = $.ajax({
    url: 'path/to/destination',
    type: 'GET',
    dataType: 'json'
})
.done(function() {
    console.log("Done!");
})
.fail(function() {
    console.log("Error!");
})

要中止通话,请执行以下操作:call.abort();但这似乎不起作用。 (虽然它应该,对吧?!)。

当我触发abort()函数时,它会返回一个对象,但我的请求仍然在开发工具的网络选项卡中处于待处理状态。一旦服务器完成处理我的请求,无论abort()函数如何,它都会将其返回。

根据我的研究,它不能以这种方式停止,因为该请求已经由服务器发送和接收,因此无法中止。但是,不应该有办法停止在服务器上等待并忽略它将返回的信息或只是切断有问题的AJAX呼叫的连接?

1 个答案:

答案 0 :(得分:1)

.abort()实际上做的是它只是忽略了响应:

http://www.w3.org/TR/XMLHttpRequest/#the-abort()-method

你是对的,你不能中止等待回应。这违反了HTTP规范,它可能会导致奇怪的问题(取消并行请求时)。你所能做的只是忽略它。

但这不是问题,因为等待响应是非常轻量级的操作。不用担心。