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 回答