如何处理所有AJAX调用的特定HTTP错误?

问题描述:

我有一个网络应用程序,通过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); 

您可以使用$.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