Jquery ajax错误回调

sim*_*rsh 34 ajax jquery

我在这里需要一些建议或者一些解释.我有一个jquery ajax调用,

$.ajax({
 type: "GET",
 url: base_url+'/ajax/fetch/counts/',
 dataType: 'json',
 data: {},
 error: function(xhr, error){
        console.debug(xhr); console.debug(error);
 },
 success: display_counts
});
Run Code Online (Sandbox Code Playgroud)

它工作正常.我的success回调在响应时正确触发.但是,我注意到的是error每次都会触发我的回调,即使我的调用返回成功状态200.在上面的error回调中,我看到该对象xhr.status是200.

任何人都可以解释什么是错的,或者这里发生了什么?error只有当我有404或非200响应时才会触发回调.我的假设是否正确?

谢谢.

pal*_*aѕн 31

只是一个建议,尝试使用$ .ajaxSetup()来获取正确的错误,如下所示:

$(function() {
    $.ajaxSetup({
        error: function(jqXHR, exception) {
            if (jqXHR.status === 0) {
                alert('Not connect.\n Verify Network.');
            } else if (jqXHR.status == 404) {
                alert('Requested page not found. [404]');
            } else if (jqXHR.status == 500) {
                alert('Internal Server Error [500].');
            } else if (exception === 'parsererror') {
                alert('Requested JSON parse failed.');
            } else if (exception === 'timeout') {
                alert('Time out error.');
            } else if (exception === 'abort') {
                alert('Ajax request aborted.');
            } else {
                alert('Uncaught Error.\n' + jqXHR.responseText);
            }
        }
    });
});
Run Code Online (Sandbox Code Playgroud)


eis*_*eis 28

在http错误上调用错误回调,但如果响应上的JSON解析失败,也会调用错误回调.如果响应代码为200但您仍然被抛出错误回调,那么这可能会发生.

  • 如果您期望非JSON响应.您可以将dataType选项设置为脚本/文本...等.结帐http://api.jquery.com/jQuery.ajax并查看dataFilter以获取更多信息. (2认同)