Ajax帖子被firefox中止(在Chrome或IE中看不到)

时间:2012-10-30 22:27:56

标签: ajax firefox post fiddler

当使用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请求由许多方法调用,并且只有在发送最大数据集时才会失败。

8 个答案:

答案 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"陈述:

  1. e.preventDefault();return false;添加到按钮事件处理程序
  2. datatype: "json", contentType: "application/json",添加到jQuery.ajax方法参数。
  3. 向每个人寻求线索。

答案 7 :(得分:0)

如果您在CORS请求中使用双向SSL身份验证,Firefox将默认中止您的jQuery ajax请求。这是由于Firefox和Chrome中CORS的不同实现。您可以通过将withCredentials: true添加到XHR实例来解决客户端代码中的此问题。在jQuery中,您可以将其添加到ajax调用:

xhrFields: {
  withCredentials: true
}

查看这些错误报告以获取更多详细信息:

我还注意到Firefox仍然绝对拒绝发送OPTIONS预检请求的凭据,因此您需要将服务器配置为不需要它们(这在双向SSL方案中对我来说似乎很疯狂)。