2010-04-06 196 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