【问题标题】:Error 504 Gateway Time-out ajax jquery错误504网关超时ajax jquery
【发布时间】:2016-02-08 01:54:04
【问题描述】:

jQuery.ajax 返回以下错误

504 - 错误 - 网关超时

request = $.ajax({
    url: Raiz + "/informes/Inventario/pdfInventarioAlmacenValorado.php", 
    type: "POST", 
    data: data, 
    timeout: (600 * 1000), 
    success: function(resp) {
        SalidaReporte = resp;
    }, 
    error: function(jX, err, errT) {
        alert(jX.status + "\n" + err + "\n" + errT);
    }
});

A可能是由于问题?? PHP 不是问题。导致此错误的 Web 服务器可能存在一些限制?在我的本地服务器上它不会失败。谢谢!

【问题讨论】:

  • 任何 500 错误意味着问题出在服务器端。这种情况下的具体错误意味着服务器响应请求的时间过长。您应该调查pdfInventarioAlmacenValorado.php 以查看可能导致问题的原因。如果您无权访问服务器,请向提供商报告该问题。
  • pdfInventarioAlmacenValorado.php 文件不是问题,确实需要很长时间才能响应,所以我尝试将 ajax 超时设置为 (600 * 1000) 但似乎不起作用跨度>
  • jQuery 超时不是问题 - 服务器正在超时。无论如何,您不应该真的有任何在请求下运行缓慢的东西。使用调度程序在后台执行长时间运行的任务,并在完成时提醒用户。

标签: jquery ajax timeout


【解决方案1】:

我找到了#david-hoerster发布的一个可行的解决方案

如果您的错误事件处理程序在发生超时时采用三个参数(XMLHttpRequest、textstatus 和消息),则状态参数将为“超时”

$.ajax({
    url: "/ajax_json_echo/",
    type: "GET",
    dataType: "json",
    timeout: 1000,
    success: function(response) { alert(response); },
    error: function(xmlhttprequest, textstatus, message) {
        if(textstatus==="timeout") {
            alert("got timeout");
        } else {
            alert(textstatus);
        }
    }
});​

使用jsFiddle,您可以测试 ajax 调用——它将等待 2 秒后响应。我将超时设置为 1 秒,因此它应该会出错并将“超时”的文本状态传递回错误处理程序。

【讨论】:

    猜你喜欢
    • 2011-04-08
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 2015-10-20
    • 2019-09-29
    • 2016-06-19
    相关资源
    最近更新 更多