0

最後に200(成功)に達したときをキャプチャ/認識して、何かを実行しようとしています。

最後に200に到達したことをどうやって知ることができますか?

これが私のコードです

//saveおよびcheckstatus関数を呼び出すメイン関数

   $(function () {
        $("#saveChange").click(function () {
            save().complete(function (jqXHR, responseText) {

                var stat = jqXHR.status;
                if (stat == 200) {
                    console.log("inside 200");

                    setTimeout(function () {
                        checkServerStatus().complete(function (jqXHR, responseText) {

                            if (jqXHR.status == 200) {
                                console.log("inside 200");
                                setTimeout(function () {
                                    checkServerStatus().complete(function (jqXHR, responseText) {
                                        count = 0;
                                        count++;
                                        max = 10;
                                        if ((count <= max) && (jqXHR.status == 200)) {
                                            checkServerStatus();
                                            //alert(count);
                                        }

                                    });
                                    if (jqXHR.status == 500) {
                                        // alert(" 500 setimeout inside 500 status "+jqXHR.status + responseText);  
                                    } else if (jqXHR.status == 200) {
                                        // alert(" 200 setimeout inside 200 status "+jqXHR.status + responseText);  
                                    }
                                }, 9000);

                            } else if (jqXHR.status == 500) {
                                // 500 error no submission
                                console.log("inside 500");
                                //alert(" 300 setimeout inside 500 status "+jqXHR.status + responseText);   
                                checkServerStatus();
                            } else {
                                alert("else");
                            }
                        });
                    }, 6000);
                } 

            });


        });
    });

    });
4

1 に答える 1

0

ajax リクエストの再試行については、ここで良い議論が行われています。遅延オブジェクトを自分で処理することをお勧めします。このようにして、ダミーを遅延させ、気まぐれに解決または拒否し、通常どおりチェーンすることができます。

function checkServerStatus() {
    var dfd = new $.deferred();

    $.ajax({
         url : 'ajaxurl.json',
         tryCount : 0,
         retryLimit : 3,
        success : function(json) {
            dfd.resolve();
        },
        error : function(xhr, textStatus, errorThrown ) {
            if (this.tryCount++ <= this.retryLimit) {
                //try again
               $.ajax(this);
               return;
            }
            dfd.reject();
        }
    });
    return dfd;
}

いつものチェーン

checkServerStatus().then(function() {
    // success!
}, function() {
   // reached retry limit :(
});
于 2012-12-05T17:35:32.123 に答える