如何检测ajax请求上的php服务器超时?

如何检测ajax请求上的php服务器超时?,php,javascript,ajax,Php,Javascript,Ajax,我想知道,假设您对运行PHP代码的页面执行了ajax请求。页面输出一些数据(使用flush()方法或其他方法),但由于30秒超时或其他错误,php请求结束 现在,当请求结束时,我想在客户端了解它并重新启动请求 i、 我想我有这样的东西 xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==3 && xmlhttp.status==200){ document.getElementById(&qu

我想知道,假设您对运行PHP代码的页面执行了ajax请求。页面输出一些数据(使用flush()方法或其他方法),但由于30秒超时或其他错误,php请求结束

现在,当请求结束时,我想在客户端了解它并重新启动请求

i、 我想我有这样的东西

xmlhttp.onreadystatechange=function(){
    if(xmlhttp.readyState==3 && xmlhttp.status==200){
    document.getElementById("A").innerHTML=xmlhttp.responseText;
    }
    else if(xmlhttp.readyState==4 && xmlhttp.status==200){
    document.getElementById("A").innerHTML=xmlhttp.responseText;
    //plus some additional code to end the process
    }
    else if(xmlhttp.status== SOMETHING /*WHAT DO I ADD HERE TO KNOW THAT THE SERVER HAS TIMED OUT OR SOMETHING SO I CAN RESTART THE XMLHTTP CYCLE */){
    //code to resend xmlhttp request.
    }
    
}

我使用的一个策略是在JS中设置计时器,然后在调用成功时清除它

var myTimer = setTimeout(stuffToDoOnFailure, 6000); // 6 secs

ajaxCall(function callBack() {
    clearTimeout(myTimer);
});
编辑:


当然,如果ajax调用在6秒后成功,您可能会同时执行
stuffToDoOnFailure
callBack
,因此您需要以某种方式处理这种情况。不过,这取决于你的应用程序。

在你的问题中,你要求在服务器端进行检查,但在你的代码中,javascript中有空间进行检查。由于您的ajax是异步的,因此可以将其触发,然后用户可以离开页面。脚本将没有机会再次执行或通知服务器发生超时。你必须强迫用户留在你的页面上,直到回复回来。您可能必须通过在服务器上而不是在js上跟踪来解决这个问题。我的错,这是一个输入错误。更正。另外,我希望支票在客户端。如果用户离开了页面,dosnet就真的很重要了。它还预先假定您知道时间限制是什么。这不是个好办法。