【问题标题】:How's 504 response header handled in ajax request in jquery?jquery ajax 请求中的 504 响应头是如何处理的?
【发布时间】:2015-05-06 08:05:49
【问题描述】:

我有一个来自客户端的 ajax 调用,看起来像这样:

$.ajax({
            'url': '/converter/ajax-make-corrections/',
            'data': {

                corrections: JSON.stringify(globalCorrrectionsObject)
            },
            type: 'POST',
            success: function(data) {

            }
        })

此操作将相当大的文件发送到服务器以执行某些服务器工作。问题是服务器上有时间限制 - 30分钟。在该服务器关闭与 504 错误的连接后(这是我在 nginx 访问日志文件中看到的):

[06/May/2015:09:13:33 +0300] "POST /converter/ajax-make-corrections/ HTTP/1.1" 504

同时在 nginx error.log 文件中

*1799741 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 

apache 日志中没有错误。

这就是发生的事情:来自浏览器的操作在 30 分钟后重新启动了 9 次。由于浏览器中的操作无法使用相同的数据第二次手动启动,我最好的猜测是 $.ajax 操作在收到 504 响应后会自行重启。是否可以? $.ajax 如何处理 504 响应?它会重新启动自己再次发送相同的数据吗?

【问题讨论】:

  • 你能看一下检查器中的网络选项卡,看看 ajax 调用是否重新启动了吗? ajax 调用只触发一次,而不是多次,检查你的页面,看看是否有什么东西触发它触发 9 倍??
  • 必须尝试增加执行时间?

标签: javascript php jquery ajax nginx


【解决方案1】:

$.ajax 操作在收到 504 响应后重新启动。是否可以?它会重新启动自己再次发送相同的数据吗?

在这种特殊情况下,我会说。您提供的脚本中没有任何内容可以发出请求。

$.ajax 如何处理 504 响应?

error: function (request, status, error) {
    alert(request.responseText);
}

也尝试增加max_execution_time

ini_set('max_execution_time', 3600); //1 hour

【讨论】:

    猜你喜欢
    • 2015-07-23
    • 2013-06-19
    • 2015-04-14
    • 2010-12-01
    • 1970-01-01
    • 2015-04-26
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多