发生错误时,jQuery ajax请求重复

时间:2017-04-11 05:47:04

标签: javascript jquery ajax

我已经阅读了几篇与此类问题相关的帖子,但我还是没有在这里找出问题。

当调用以下函数并收到200响应时,一切都很好;当遇到404时,重复ajax;添加超时仅限制重复请求的时间范围。这有一个简单的原因,但它让我不知道......

function myFunction(ID) {
    var url = 'http://example.org/' + ID;
    var response;
    $.ajax(url, {
        success: function (responseText) {
            if (responseText !== undefined) {
              response = responseText;
            }
        },
        error: function (xhr, ajaxOptions, errorMsg) {
            if (xhr.status == 404) {
                console.log('404: ' + errorMsg);
            } else if (xhr.status == 401) {
                console.log('401: ' + errorMsg);
            }
        }
    });
    return response;
}

1 个答案:

答案 0 :(得分:1)

您可以使用以下给定的方法获取错误数据,而无需在AJAX中重复。

$.ajax(url, {
    success: function (responseText) {
        if (responseText !== undefined) {
          response = responseText;
        }
    },
    error: function (xhr) {
        //the status is in xhr.status;
        //the message if any is in xhr.statusText;
    }
});

<强>更新

您无法返回响应,因为您有异步请求,并且在实际的ajax请求给出响应之前将返回响应变量。所以我建议您使用回调函数成功使用同步请求。

因此,要获得响应,您可以拥有如下函数:

function getResponse() {
    return $.ajax({
        type: "GET",
        url: your_url,
        async: false
    }).responseText;
}

或者回调方法是:

$.ajax(url, {
    success: function (responseText) {
        if (responseText !== undefined) {
            theCallbackFunction(responseText);
        }
    },
    error: function (xhr) {
        //the status is in xhr.status;
        //the message if any is in xhr.statusText;
    }
});

function theCallbackFunction(data)
{
    //do processing with the ajax response
}