我有ajax调用,我处理大数据,然后以ajax成功重新加载页面。 Ajax调用是
$.ajax({
type:'POST',
cache:false,
async:false,
url: 'URL',
data: "",
timeout:0,
beforeSend:function(msgg){
$('#loading').show();
},
success: function(data){
if(data == "success")
{
setTimeout(function(){
$('#loading').hide();
window.location.reload();
},5000);
}
}
});
但它获得504 GATEWAY_TIMEOUT并且ajax调用永远不会成功。我需要手动刷新。
答案 0 :(得分:0)
504 GATEWAY_TIMEOUT
个错误。它可能是某种内部网关错误。
以下是一些排除故障的步骤:
答案 1 :(得分:0)
我认为浏览器不能保持长时间的ajax调用,所以我使用了ajax召回和部分处理数据。它解决了问题。
答案 2 :(得分:0)
建议您拨打更多电话以检查状态/检索数据。
如果无法完成上述操作,则可以选择以下方法:
注意:不建议将此解决方案用于生产环境或高流量情况,请确保在隔离的服务器上执行此操作。
如果使用Apache Web Server 2.4,则TimeOut
伪指令默认设置为60秒。
有关更多详细信息,请参见this article。
无论max_execution_time
虽然php.ini中的max_execution_time
设置了php的执行时间,但是Apache TimeOut
指令设置了最大连接时间。
示例:
如果您未从php设置任何响应代码,则一切正常,PHP返回200,如果发生错误,则返回500。
当您收到意外的HTTP响应代码时,也请密切注意Web服务器。
答案 3 :(得分:0)
找到了#david-hoerster发布的工作解决方案
如他所说,如果您的错误事件处理程序在发生超时时采用三个参数(XMLHttpRequest,textstatus和message),则状态arg将为“超时”
$.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秒,因此它应该出错,并将'timeout'的文本状态传递回错误处理程序。