/**
* ajax 全局处理
* @author:DragonetYu
* 2017-09-28
*/
;(function(){
//过滤所有ajax
$.ajaxPrefilter("*", function(options, originalOptions, jqXHR) {
options.beforeSend = ajaxBeforeSend(options.beforeSend);
options.error = ajaxError(options.error);
options.complete = ajaxComplete(options.complete);
options.success = ajaxSuccess(options.success);
});
function ajaxSuccess(res){
return function(jqXHR, options) {
//console.info("ajax ajaxSuccess ...");
//console.info(arguments[0]);
var code = arguments[0].code;
switch (code) {
case 200010:
location.href="http://www.baidu.com"; //TODO
break;
default:
res && res.apply(this, arguments);
break;
}
};
}
/**
* ajax请求的前处理。
*
* @param orgnBeforeSend 指定设置的前处理
*/
function ajaxBeforeSend(orgnBeforeSend) {
return function(jqXHR, options) {
// console.info("ajax begin ...");
orgnBeforeSend && orgnBeforeSend.apply(this, arguments);
};
};
/**
* ajax请求的完成处理。
*
* <p>关键字this是ajax的options内容。
*
* @param orgnComplete 指定设置的完成处理
*/
function ajaxComplete(orgnComplete) {
return function(jqXHR, textStatus) {
// console.info("ajax complete ...");
// console.info(arguments);
orgnComplete && orgnComplete.apply(this, arguments);
};
};
function ajaxError(orgnError) {
return function(jqXHR, textStatus, errorThrown) {
orgnError && orgnError.apply(this, arguments);
globalAjaxError.apply(this, arguments);
};
};
/**
* 系统全局的Ajax错误处理。
*
* <p>关键字this是ajax的options内容。
*
* @param jqXHR
* @param textStatus
* @param errorThrown
*/
function globalAjaxError(jqXHR, textStatus, errorThrown){
var options;
//TODO
if (jqXHR.status == 500) {
options = {
title : '系统错误',
content : jqXHR.responseJSON.errMsg
};
} else if (jqXHR.status == 406) {
options = {
title : '业务错误',
content : jqXHR.responseJSON.errMsg,
};
} else if (jqXHR.status == 403) {
window.location.reload();
} else {
options = {
title : '系统错误',
content : "系统发生错误,请联系管理员。",
};
}
alert(options.title);
};
}());