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

私が使用した戦略の1つは、JSでタイマーを設定し、呼び出しが成功した場合はタイマーをクリアすることでした。

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

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

編集:

もちろん、ajax呼び出しが6秒後に成功した場合、両方が実行されてしまう可能性がstuffToDoOnFailureあるcallBackため、何らかの方法でそのケースを処理する必要があります。ただし、それはアプリによって異なります。

于 2013-01-01T13:17:29.080 に答える