使用 Firefox 时,我的 ajax post 请求在 Firebug 中被报告为已中止。 ajax post 在 IE 和 Chrome 中运行良好。 这不是跨域请求。 我尝试使用 fiddler 查看问题,当 fiddler 捕获网络流量(设置为解密 https 的选项)时,该帖子有效。 无法在我的本地开发环境中创建发布问题,因为所有 Firefox 尝试都成功发布了我通过 ajax 发送的数据。 知道为什么这篇文章在 fiddler 运行时有效吗? 它可能会让我了解如何让它发挥作用。
$.ajax({
type: 'POST',
url: '/Save',
data: JSON.stringify(dataset),
datatype: "html",
contentType: "application/json",
success: function (data, textStatus, jqXHR) {
//alert("success");
},
error: function (jqXHR, textStatus, errorThrown) {
//alert("error");
}
});
此外,这个ajax请求是通过多种方法调用的,只有当发送最大的数据集时才会失败。
只尝试
async: false
在ajax选项中,我遇到了同样的问题。
我首先会明确设置(和更改)一些基本的 ajax 选项:
cache: false,
timeout: 60000,
async: false
您的服务器返回什么类型的内容。 JSON 或 HTML 内容。您是否在服务器内容中使用 charset=utf-8 ?确保您的服务器响应必须采用 JSON contentType 格式。另一种猜测是从代码中删除 datatype: "html" 。试试你的运气。
如果您的服务器返回 json 方式,请尝试以下
$.ajax({
type: 'POST',
url: '/Save',
data: JSON.stringify(dataset),
datatype: "json",
contentType: "application/json",
success: function (data, textStatus, jqXHR) {
//alert("success");
},
error: function (jqXHR, textStatus, errorThrown) {
//alert("error");
}
});
数据类型:“json”,内容类型:“application/json”有道理
如果您从事件处理程序发送此 AJAX 请求(例如:单击提交按钮),请务必防止浏览器的默认行为(提交表单),直到您将触发 2 个 HTTP 请求,第一个请求将被中止.
您可以使用
e.preventDefault()
来实现此目的。
我刚刚在 IE8 上遇到了这个问题。
检查服务器上的最大帖子大小设置。
我也遇到了类似的问题,并尝试了上面描述的一些想法。 我终于修复了“中止”状态:
e.preventDefault();
和 return false;
添加到按钮事件处理程序datatype: "json", contentType: "application/json",
添加到 jQuery.ajax
方法参数。感谢大家提供线索。
这要么是跨域问题,要么是 Firefox 由于请求是异步而中止您的请求的问题。对于跨域,您可以检查请求的来源以及网络服务允许的内容。您可能需要阅读 CORS。
如果不是跨域那么肯定是请求异步的问题。只需将其更改为同步即可。
如果您在 CORS 请求上使用 2 路 SSL 身份验证,Firefox 将默认中止您的 jQuery ajax 请求。 这是由于 Firefox 和 Chrome 中 CORS 的实现不同所致。 您可以通过将
withCredentials: true
添加到 XHR 实例来解决客户端代码中的此问题。 在 jQuery 中,您可以将其添加到 ajax
调用中:
xhrFields: {
withCredentials: true
}
查看这些错误报告以了解更多详细信息:
我还注意到,Firefox 仍然绝对拒绝在 OPTIONS 预检请求上发送凭据,因此您需要将服务器配置为不需要它们(在 2 向 SSL 场景中,这对我来说似乎很疯狂)。
ns_binding_中止发布请求
在表单提交过程中,如果您遇到“ns_binding_aborted”的问题,那么
您可以使用 e.preventDefault() 来解决此问题。