2010-04-06 155 views
4

我有一堆包含成功和错误条件像这样的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和要求,以显示更多信息的错误消息? Q1。

回答

6

Q1。您可以使用.ajaxError()这样的:

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

...或者如果#msg元素存在的整段时间,你可以这样做:

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

Q2。您可以使用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

+0

$ .ajaxError在jQuery 1.7.1中“未找到”。 $(document).ajaxError虽然... – 2011-12-06 08:29:59

+0

$ .ajaxError(函数()不起作用,正如指出的那样。必须附加到元素上,如“document” – 2012-01-12 12:37:16

+0

@Ajaja_Vigo - 实际上,这是jQuery中的突破性变化很久之后这个答案被张贴:) – 2012-01-12 14:55:16