jquery .getJSON()没有捕获“500内部服务器错误”

时间:2012-11-29 07:07:56

标签: jquery error-handling

我们如何让.getJSON function()检测500 Internal Server error。我尝试添加 .error().complete(status)用于检查返回状态,但它们都不起作用。看起来jQuery不承认错误。

2 个答案:

答案 0 :(得分:4)

修改

设置功能以捕捉这样的错误

jQuery Ajax错误处理函数

$(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);
            }
        }
    });
});

当你尝试这样的时候会被叫到

// jQuery AJAX Error Handler
$.ajax({
  url: "test.php"
});

有关详细信息,请查看此帖子:jquery-ajax-error-handling-function


$.getJSON函数不会返回您想要的错误;改为使用$.ajax

  $.ajax({
    url: 'url',
    dataType: 'json',
    success: function( data ) {
      alert( "SUCCESS:  " + data );
    },
    error: function( data ) {
      alert( "ERROR:  " + data );
    }
  });

还可以尝试这样的错误功能以获取更多细节

error: function (request, status, error) {
        alert(request.responseText);
    }

答案 1 :(得分:0)

如果您想使用$.getJSON()而不是$.ajax()

$("#debug").ajaxError(function(event, xhr, opt, exception){
  // do your things.
});

但是这个处理程序会捕获所有ajax错误。所以你需要处理ajax正在运行的东西。如果您不想显示#debug,请在css中设置display: none