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

标签 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 调用的连接?

最佳答案

.abort() 实际上所做的是忽略响应:

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

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

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

关于javascript - 取消服务器已收到的 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29072554/

相关文章:

javascript - Three.js r91 - 如何使用新的线宽属性来加宽/加宽线条?

javascript - 如何在 node.js 中使用 jQuery ajax 调用

javascript - 在 Cordova/Phonegap 中使用 Google API javascript

javascript - 根据选择框中选择的item_ID从MySQL检索数据

javascript - 如何学习在 javascript 中启用或禁用剑道下拉列表?

javascript - knockout JS : Validate model's property only if the bound control is visible

JavaScript 和范围问题

javascript - 当选中复选框时,如何动态地将复选框值从 View 传递到 Controller ?

javascript - 为什么 jQuery.load 不适用于该页面?

jquery - Fancybox v3 Beta 1(禁用标题)