【问题标题】:jquery Ajax $.ajaxErrorjquery Ajax $.ajaxError
【发布时间】:2010-04-06 18:19:42
【问题描述】:

我有一堆 ajax 调用,其中包含像这样的成功和错误条件:

    $.ajax({
        url: 'Remote/State.cfc'
        ,type: "POST"
        ,data: {
            'method': 'UpdateStateName'
            ,'StateID': StateID
            ,'StateName': StateName
        }
        ,success: function(result){
            if (isNaN(result)) {
                $('#msg').text(result).addClass('err');
            } else {
                $('#' + result + ' input[name="StateName"]').addClass('changed');
            };
        }
        ,error: function(msg){
            $('#msg').text('Connection error').addClass('err');
        }
    });

所有的错误条件都是一样的。换句话说,他们都在 msg id 中添加了“连接错误”这句话。

Q1:我可以删除所有这些并替换为

$().ajaxError(function(myEvent, request, settings, thrownError) {
    $('#msg').text('Connection error').addClass('err');
});

Q2:您将如何使用 myEvent 和 request 来显示更多信息的错误消息?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    第一季度。你可以像这样使用.ajaxError()

    $(document).ajaxError(function() {
      $('#msg').text('Connection error').addClass('err');
    });
    

    ...或者如果#msg 元素一直存在,您可以这样做:

    $('#msg').ajaxError(function() {
      $(this).text('Connection error').addClass('err');
    });
    

    第二季度。您可以使用ajaxError 传入的处理程序参数,它使用以下格式: handler(event, XMLHttpRequest, ajaxOptions, thrownError),类似这样:

    $(document).ajaxError(function(event, request, options, error) {
      $('#msg').addClass('err')
         .text('Connection error: ' + error + ' when connecting to ' + options.url);
    });
    

    注意: 在以前的 jQuery 版本中,这将通过 $.ajaxError() 完成,因为 1.7 不再是这种情况,您需要将它附加到您想要的 jQuery 对象上,或document,如果您不关心特定元素。

    【讨论】:

    • $.ajaxError 在 jQuery 1.7.1 中“未找到”。 $(document).ajaxError 虽然有效...
    • $.ajaxError(function() 不起作用,正如所指出的。必须附加到元素,如“文档”
    • @Aleja_Vigo - 事实上,这是 jQuery 在发布此答案很久之后的重大变化 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多