3

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

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

即假设我有这样的东西

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.
    }
    
}
4

1 回答 1

0

我使用的一种策略是在 JS 中设置一个计时器,如果调用成功则将其清除。

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

ajaxCall(function callBack() {
    clearTimeout(myTimer);
});

编辑:

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

于 2013-01-01T13:17:29.080 回答