Jquery ajax错误回调

Jquery ajax error callback

我需要一些建议或者解释。我有一个jquery-ajax调用,

1
2
3
4
5
6
7
8
9
10
$.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
});

它工作得很好。我的success回调会正确触发并响应。但是,我注意到我的error回调每次都会被触发,即使当我的调用返回success状态200时也是如此。在上面的error回调中,我看到对象xhr.status是200。

有人能解释出哪里出了问题,或者这里发生了什么吗?error回调应该只有在我有404或非200响应时才会触发。我的假设正确吗?

谢谢。


只是一个建议,尝试使用$.AjaxSetup()获得如下正确的错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$(function() {
    $.ajaxSetup({
        error: function(jqXHR, exception) {
            if (jqXHR.status === 0) {
                alert('Not connect.
 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.
' + jqXHR.responseText);
            }
        }
    });
});


对HTTP错误调用错误回调,但如果响应上的JSON解析失败,也会调用错误回调。如果响应代码为200,但仍被抛出到错误回调,则可能会发生这种情况。


我能想到的一些事情:

  • 通过设置cache: false确保已禁用缓存。
  • 如果您正在使用火狐,请尝试使用firebug和net选项卡来监视请求。
  • 不要依赖浏览器的JSON解析器。我推荐这个:https://github.com/douglascorkford/json-js/blob/master/json2.js,来自json的创建者

  • 我不是jquery专家,但我知道,对于prototype.js,如果请求成功,Ajax错误处理程序就会触发,但success处理程序会导致错误。jquery中也是这样吗?您可以通过将display_counts的全部内容放入一个try..catch块来测试是否发生了这种情况。


    最近的一个问题与jsonjquery请求有类似的问题,请尝试从JSON响应中删除周围的()


    dataTypeplain/text改为html