2012-07-29 37 views
6

我有一個網絡應用程序,通過AJAX請求和發送數據,作爲響應,我的服務器端根據具體情況發送HTTP狀態代碼。例如,如果用戶在登錄時嘗試登錄,我可能會返回400 HTTP status code。並最終我處理它與警報等如何處理所有AJAX調用的特定HTTP錯誤?

但處理這些HTTP狀態代碼變得太重,因爲我大量使用AJAX。這意味着我將在每次AJAX請求時重複處理HTTP狀態代碼,這將導致代碼重複,這是一種不好的做法。

所以,什麼我正在尋找是一種方法來處理在一個地方所有這些錯誤,所以我只是處理所有400401等使用相同的代碼。

目前我在做什麼:

手動處理錯誤的每個AJAX調用。通過使用$.ajax()中的statusCode

statusCode: { 
     500: function(data) { 
      alert('Some friendly error message goes here.'); 
     } 

這似乎是對我來說是矯枉過正,因爲我的web應用程序開發,併爲我創造更多的Ajax調用。我會一遍又一遍地重複這段代碼。

目前,我在心中唯一的想法是創建將在AJAX的頂部,類似工作的函數:

function doAjax(type,url, data, moreVars) { 
//this function is just a SIMPLE example, could be more complex and flexible. 
     $.ajax({ 
      type: type, 
      url: url, 
      data: data, 
      moreOptions:moreVars, 
      //now handling all status code. 
      statusCode: { 
       //handle all HTTP errors from one place. 
      } 
     }); 
    } 

    doAjax("POST", 'mydomain.com/login.php', dataObj); 

回答

11

您可以使用$.ajaxSetup()註冊全局錯誤狀態處理程序。

說明:爲未來的Ajax請求的默認值。

例子:

$.ajaxSetup({ 
    statusCode: { 
     500: function(data) { 
      alert('Some friendly error message goes here.'); 
     } 
    } 
}); 
+0

*「。注意:全局回調函數應該用各自的全局AJAX事件處理方法,'.ajaxStart設置()','.ajaxStop()','。 ajaxComplete()','.ajaxError()','.ajaxSuccess()','.ajaxSend()' - 而不是''.ajaxSetup()'。「的選項對象內* – josh3736 2012-07-29 00:18:44