/** * 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); }; }());