【问题标题】:Firefox keeps returning ajax status as errorFirefox 不断返回 ajax 状态为错误
【发布时间】:2015-09-03 21:15:04
【问题描述】:

我有一个 ajax 请求:

$.ajax({
        url: webURL,
        type: 'post',
        data: somedata,
        cache: false,
        datatype: "json",
        contentType: "application/json",
        success: successFunc,
        error: function(jqXHR, textStatus, errorThrown)
               {
                   console.log("Status: " + textStatus);
                   console.log("Error: " + errorThrown);
                   alert("Some error!")
               }
    });

服务器上的这个请求实际上对数据库执行了一个长时间运行的查询(大约需要十分钟)。

但是,此请求会在大约 3-5 分钟内返回,并一直显示“一些错误!”的警报。但是在服务器上,数据库查询仍在运行并且从未返回!这只发生在 Firefox 上。它在 Chrome 上运行良好。 textStatus 字段返回“error”,errorThrown 为空。

谁能帮我解释为什么这个 ajax 请求在服务器甚至发送响应之前就返回了?

这种情况只发生在 Firefox 上,并且请求需要超过 6-7 分钟才能返回。

我有一个相关的问题。我看到 Firefox 在几分钟后不断重试 ajax 请求。所以我的代码检查请求是否已经存在于缓存中。如果是,那么缓存会一直被轮询,直到查询的结果也在缓存中。问题是,如果 Firefox 正在重试请求,这将如何影响请求?是否会有多个请求在缓存中等待,或者一次只有一个请求并且旧连接不断关闭?

【问题讨论】:

  • 你分配给 somedata 什么?
  • 确保您在 somedata 变量中提供了有效的 json 数据 - 如上所述,您能给我们一个输入/输出示例吗?
  • somedata 是表单的结果。所以输入: {query1: [{name: xyz, value:abc}, {name:qwerty, value:abcd}]} 输出:实际上是一个对象列表,由 Django 使用 json.dumps 返回: HttpResponse(json.dumps (cache_result), mimetype='application/json') 这适用于 Chrome,所以我不确定数据是否是问题

标签: javascript jquery ajax firefox


【解决方案1】:

试试这个代码....

 $.ajax({
              type: "POST",
              url: "Default.aspx/sayHello",
              contentType: "application/json; charset=utf-8",
              data: "{}",
              dataType: "json",
              success: function(response)
              {
                alert(response.d);
              },
              error: function(response)
              {
                alert(response.status);
              }
          });

【讨论】:

  • 不,在请求启动后大约 5-6 分钟,它仍然进入失败案例,数据库查询仍在运行,所以它并没有真正返回,textStatus 仍然是“错误”跨度>
  • 响应文本返回为空白。不知道为什么,因为同样的事情适用于 Chrome。此外,在 Firefox 上刷新页面也可以,因为我的结果在后端的缓存中。我强烈怀疑有些事情会超时。我只是看不到什么
  • 另外,我没有使用您提供的确切代码,因为我需要发出 POST 请求
  • 我不知道错误是什么。问题不在于请求本身。问题是在发送实际响应之前我得到一个空白响应
  • 是的,这与我一直在尝试的完全一样,只是我也有一个 cache:false 字段
猜你喜欢
  • 2019-09-11
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
  • 2018-04-27
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
相关资源
最近更新 更多