如果失败,为什么我不能保持呼叫api?

时间:2016-02-10 17:41:37

标签: javascript jquery ajax

下面是我的代码......

$(document).ready(function() {
    var counter=0;
    $.ajax({
        url: "http://www.test.com:1234/testService",
        method: "POST",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: data
    })
    .done(function(data) {
        console.log(data);
    })
    .fail(function(errMsg) {
        console.log(errMsg);
        counter++;
        console.log(counter);
        if(counter <=3){
            $.ajax(this);
        }
        else {
            alert("Three times failed");
        }
    });
});

运行此代码将从API获取正确的数据。

但是,如果我删除api url末尾的“e”,API将失败,我想要的是再次重试,直到失败三次并提醒某些消息。

但是这段代码无效。

我该怎么办?

1 个答案:

答案 0 :(得分:4)

你可以做的是创建一个使ajax请求失败的函数再次调用该函数。

$(document).ready(function () {
    var counter = 0;

    function apiCall() {
        $.ajax({
                url: "http://www.asiavista.com.tw:9595/ccplapi/service.svc/CheckService",
                method: "POST",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                data: JSON.stringify({ClientType: 1})
            })
            .done(function (data) {
                console.log(data);
            })
            .fail(function (errMsg) {
                console.log(errMsg);
                counter++;
                console.log(counter);
                if (counter <= 3) {
                    apiCall(); // Try api call again
                } else {
                    alert("Three times failed");
                }
            });
    }

    apiCall(); // Trigger the first api call
});