我知道这个问题在 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 调用的连接?
最佳答案
.abort()
实际上所做的是忽略响应:
http://www.w3.org/TR/XMLHttpRequest/#the-abort()-method
你是对的,你不能中止等待响应。这违反了 HTTP 规范,并且可能会导致奇怪的问题(当取消并行请求时)。你所能做的就是忽略它。
但这不是问题,因为等待响应是非常轻量级的操作。无需担心。
关于javascript - 取消服务器已收到的 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29072554/