如何处理所有AJAX调用的特定HTTP错误?
问题描述:
我有一个网络应用程序,通过AJAX请求和发送数据,作为响应,我的服务器端根据具体情况发送HTTP状态代码。例如,如果用户在登录时尝试登录,我可能会返回400 HTTP status code
。并最终我处理它与警报等如何处理所有AJAX调用的特定HTTP错误?
但处理这些HTTP状态代码变得太重,因为我大量使用AJAX。这意味着我将在每次AJAX请求时重复处理HTTP状态代码,这将导致代码重复,这是一种不好的做法。
所以,什么我正在寻找是一种方法来处理在一个地方所有这些错误,所以我只是处理所有400
,401
等使用相同的代码。
目前我在做什么:
手动处理错误的每个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.');
}
}
});
*“。注意:全局回调函数应该用各自的全局AJAX事件处理方法,'.ajaxStart设置()','.ajaxStop()','。 ajaxComplete()','.ajaxError()','.ajaxSuccess()','.ajaxSend()' - 而不是''.ajaxSetup()'。“的选项对象内* – josh3736 2012-07-29 00:18:44