当使用firefox时,我的ajax post请求被报告为在firebug中被中止。 ajax帖子在IE和Chrome中运行良好。它不是跨域请求。我尝试使用fiddler查看问题,当fiddler捕获网络流量(选项设置为解密https)时,帖子可以正常工作。无法在我的本地开发环境中创建帖子问题,因为所有Firefox都尝试成功发布我通过ajax发送的数据。知道为什么这个帖子在小提琴手跑的时候有效吗?它可能会让我知道如何让它工作。
$.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请求由许多方法调用,并且只有在发送最大数据集时才会失败。
答案 0 :(得分:9)
仅限尝试
async: false
在ajax选项中,我遇到了同样的问题。
答案 1 :(得分:3)
我首先要明确设置(和更改)一些基本的ajax选项:
cache: false,
timeout: 60000,
async: false
答案 2 :(得分:2)
您的服务器返回什么类型的内容。 JSON或HTML内容。您是否在服务器内容中使用 charset = utf-8 。确保您的服务器响应必须是JSON contentType。另一个猜测是从代码中删除数据类型:“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”,contentType:“application / json”有意义
答案 3 :(得分:2)
如果您从事件处理程序发送此AJAX请求(例如:单击提交按钮),请确保阻止浏览器的默认行为(提交表单),直到您有2个HTTP请求被触发,第一个被流产。
您可以使用e.preventDefault()
来实现此目标。
我在IE8上遇到了这个问题。
答案 4 :(得分:1)
检查服务器上的最大帖子大小设置。
答案 5 :(得分:0)
这是一个跨域问题,或者因为请求是异步而导致Firefox中止您的请求。对于跨域,您可以检查请求的来源以及Web服务允许的内容。您可能需要阅读CORS。
如果它不是跨域,那么请求异步肯定是一个问题。只需将其更改为同步。
答案 6 :(得分:0)
我也遇到了类似的问题并尝试了上述一些想法。 我终于修好了#34; aborted"陈述:
e.preventDefault();
和return false;
添加到按钮事件处理程序datatype: "json", contentType: "application/json",
添加到jQuery.ajax
方法参数。向每个人寻求线索。
答案 7 :(得分:0)
如果您在CORS请求中使用双向SSL身份验证,Firefox将默认中止您的jQuery ajax请求。这是由于Firefox和Chrome中CORS的不同实现。您可以通过将withCredentials: true
添加到XHR实例来解决客户端代码中的此问题。在jQuery中,您可以将其添加到ajax
调用:
xhrFields: {
withCredentials: true
}
查看这些错误报告以获取更多详细信息:
我还注意到Firefox仍然绝对拒绝发送OPTIONS预检请求的凭据,因此您需要将服务器配置为不需要它们(这在双向SSL方案中对我来说似乎很疯狂)。