jQuery:捕获ajax异常

jQuery:捕获ajax异常,jquery,ajax,Jquery,Ajax,许多失败的jqueryajax请求正在用错误污染我的控制台。查看产生这些控制台错误的代码(jQuery 1.7.2,第8240行) 我注意到这条评论解释了为什么那里没有try/catch。然而,即使在我的jQuery.ajax请求中有一个显式的error回调函数,我仍然没有通过jQuery.ajax处理这些错误 如何处理jQueryAjax错误,使错误消息不会出现在控制台中 编辑:下面是我执行ajax请求的代码片段,以及准确的错误消息(在Chrome中): 下面是Chrome的错误消息: GET

许多失败的jqueryajax请求正在用错误污染我的控制台。查看产生这些控制台错误的代码(jQuery 1.7.2,第8240行)

我注意到这条评论解释了为什么那里没有
try
/
catch
。然而,即使在我的
jQuery.ajax
请求中有一个显式的
error
回调函数,我仍然没有通过
jQuery.ajax
处理这些错误

如何处理jQueryAjax错误,使错误消息不会出现在控制台中

编辑:下面是我执行ajax请求的代码片段,以及准确的错误消息(在Chrome中):

下面是Chrome的错误消息:

GET
http://zeus/dashboard/python/perfdata.xml?sid=Thu%20May%2024%202012%2016:09:38%20GMT+0100%20(GMT%20Daylight%20Time)
jquery.js:8240

您可以使用自定义函数来执行此操作

 $(document).ajaxError(ajaxErrorHandler); 
并设置在该处理程序中需要执行的任何操作

var ajaxErrorHandler = function () {
        //do something
    }
你试过了吗

  $.ajaxSetup({
    timeout:10000,
    beforeSend: function(xhr) {
      //
    },
    complete:function(xhr,status) {
      //
    },      
    error: function(xhr, status, err) {
      switch (status){
      case 'timeout': {}
      case 'parseerror': {}
      case 'abort': {}
      case 'error': {}
      default: {}
      }
    }
  });
如果要进行测试,您可以通过覆盖函数“send”来尝试此功能(在chrome中效果良好):


我收到500个内部服务器错误,当它指向行
xhr.send((s.hasContent&&s.data)| null)时

但当我检查apache日志(内部服务器错误)时,错误是其他代码中的其他错误


请检查一下。

您能否发布创建AJAX请求的代码和完整的错误消息。您是否尝试在
$.ajax
调用周围添加
try/catch
块?我不确定这个错误是什么意思,但看起来好像是在尝试发出请求时发生的,我认为
.ajaxrerror
只适用于响应上的错误。这些错误可能是XML解析错误吗?我认为这些控制台消息根本不是例外,它们只是来自失败的网络请求的通知。如果有
标记引用缺少的图像,则会得到类似的结果。我怀疑您是否能够抑制它们。好的,我已经尝试过了,但是
ajaxErrorHandler
会在控制台错误之上执行!非常感谢。这确实帮了我的忙:)
var ajaxErrorHandler = function () {
        //do something
    }
  $.ajaxSetup({
    timeout:10000,
    beforeSend: function(xhr) {
      //
    },
    complete:function(xhr,status) {
      //
    },      
    error: function(xhr, status, err) {
      switch (status){
      case 'timeout': {}
      case 'parseerror': {}
      case 'abort': {}
      case 'error': {}
      default: {}
      }
    }
  });
$(function() {

    var xhr = null;

    if (window.XMLHttpRequest) {
        xhr = window.XMLHttpRequest;
    }
    else if(window.ActiveXObject('Microsoft.XMLHTTP')){
        // I do not know if this works
        xhr = window.ActiveXObject('Microsoft.XMLHTTP');
    }

    var send = xhr.prototype.send;
    xhr.prototype.send = function(data) {
        try{
            //TODO: comment the next line
            console.log('pre send', data);
            send.call(this, data);
            //TODO: comment the next line
            console.log('pos send');
        }
        catch(e) {
            //TODO: comment the next line
            console.log('err send', e);
        }
    };

    $.ajax({
        dataType: 'xml',
        url: "./python/perfdata.xml?sid=" + (new Date()).getTime(),
        success: function (data) {
            var protocols = $("Protocols", data).children();

            parseData(protocols);
        },
        error: function (error) {
            setTimeout(getData, 200);
        }
    });
});