DragonetYu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
/**
 * 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);
    };
}());

 

posted on 2017-09-28 09:43  DragonetYu  阅读(253)  评论(0编辑  收藏  举报