質問

私はAjaxコールを使用して開発していましたが、デバッグ中に、Ajaxが実際に想像していたよりもはるかに多くの時間リクエスト/応答を送信していることがわかりました。

ずっと前に、私は舞台裏で何が起こっているのかを説明する良い文書を手に入れましたが、それを失いました。

最近では、Web上のAjaxチュートリアルは、コーディングの方法とそれらのIFステートメントのみのチェックについてのみ語っています readystate == 4status == 200 私のような人に良い説明を提供していません。

フローを下にコードでテストしましたが、出力は奇妙だと思います。私の混乱は、Ready 4 Stateが2回現れている理由です。定義によると、 準備4 意味 完了しました それで、2回完了する理由はないはずですか?

出力

START
ready 1                //loading
START
ready 2                //loaded
ready 2 status=200     //loaded
START
ready 3                //interactive
ready 3 status=200     //interactive
START
ready 4                //complete
START
ready 4                //complete   ... again???

テストコードスニペット

xmlHttp.onreadystatechange = function() {

                alert("START");

                if(xmlHttp.readyState == 0) {
                    alert('ready 0');
                    alert('ready 0 status=' + xmlHttp.status);
                }

                if(xmlHttp.readyState == 1) {
                    alert('ready 1');
                    alert('ready 1 status=' + xmlHttp.status);
                }

                if(xmlHttp.readyState == 2) {
                    alert('ready 2');
                    alert('ready 2 status=' + xmlHttp.status);
                }

                if(xmlHttp.readyState == 3) {
                    alert('ready 3');
                    alert('ready 3 status=' + xmlHttp.status);
                }

                if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    alert('ready 4');
                } 
   }                 
役に立ちましたか?

解決

あなたは読むことができます quirksmode Ajax CallsとReadyStateで異なるブラウザの動作について。

私は見つけました これ を使用して主張するリンク Abort コマンドはReadyState 4を発行します(テストしていません) - 使用していますか Abort?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top