外部js书写规则

/**
 * 本文件处理所有以ajax方式与后台进行的交互
 */
(function(exports) {
    "use strict";
    
    var URL_EXIT = "http://action:10405",
        GLOBAL_DEBUG = false;  //全局debug开关, debug模式与 common/test/response.js 组合使用
    
    var ajax = {
               
        /**
         * 默认不显示loading动画
         */
        SHOW_LOADING : false,


        /**
         * 默认的错误处理
         */
        defaultErrorHandle : function(xmlHttpRequest, textStatus, errorThrown) {
            var message = "";
            switch (textStatus) {
            case "timeout":
                message = "请求超时.";
                alert(message);
                break;
            case "parsererror":
                message = "数据格式出错.";
                alert(message);
                break;
            default:
                return false;
            }
            return false;
        },
        
        /**
         * 显示loading动画
         */
        showLoading: function() {
            var loadingHtml = $(".loading");
            if (loadingHtml.length <= 0) {
                loadingHtml = $('<div class="loading"> <img src="/common/images/loading.gif"> </div>');
                loadingHtml.appendTo('body');
            }
            loadingHtml.css("padding-top", loadingHtml.height() / 2 - 30 + "px");
            loadingHtml.fadeIn(600);
            
            // 最多5秒
            setTimeout(function () {
                loadingHtml.fadeOut(600);
            }, 5000)
        },
        
        /**
         * 隐藏loading动画
         */
        hideLoading: function() {
            $(".loading").fadeOut(600);
        },


        /**
         * 对公共的请求参数做全局封装。
         * 返回 jqXHR 对象,仍然支持链式表达式
         * @param onSuccess 成功时的回调
         * @param onError 失败时的回调
         * @param options debug时所用的配置选项
         */
        run : function(url, data, onSuccess, onError, options) {
            var blackList = [ -204007, -204009, -207001, -204001, -10001 ], // 出现这些错误号需要交易登出
                that = this;
            
            if (that.isDebug(options)) {
                return that.debug(url, data, onSuccess, onError, options);
            }


            //跳转到互联网方式请求,目前的跳转要求是 
            //action=27006 & ( funcId=101080 funcId=101070 funcId=101073 funcId=101066  funcId=101092 funcId=101064  funcId=101002&type=report )
            var change3g = false;
            if(url.indexOf("action=27006") != -1 
                && (  url.indexOf("funcId=101080") !=-1 || url.indexOf("funcId=101070") !=-1 
                    || url.indexOf("funcId=101073") !=-1 || url.indexOf("funcId=101066") !=-1 
                    || url.indexOf("funcId=101092") !=-1 || url.indexOf("funcId=101064") !=-1
                    || url.indexOf("funcId=101002") !=-1 )
              ) 
            {
                
                if(url.indexOf("/reqxml?action=27006&path=/htsc_hub/info&") != -1) {
                    change3g = true;
                    url = url.replace("/reqxml?action=27006&path=/htsc_hub/info&", "http://120.27.165.176:7707/htsc_hub/info?"); 
                }
                
            }


            return $.ajax({
                type : "post",
                url : url,
                data : data,
                async : true,
                contentType : "application/x-www-form-urlencoded;", // 避免乱码


                beforeSend: function() {
                    if (that.SHOW_LOADING) {
                        that.showLoading();    
                    }
                },
                complete: function() {
                    if (that.SHOW_LOADING) {
                        that.hideLoading();    
                    }
                },                
                success : function(data) {
                    // 处理带错误码的返回
                    if(change3g) {
                        var newData = {"ACTION":"27006","ERRORNO":"100","BINDATA":data};
                        onSuccess && onSuccess(newData);
                    } else { 
                        if (data && data.ERRORNO) {
                            var errorNumber = Number(data.ERRORNO);
                            if (blackList.indexOf(errorNumber) >= 0) {
                                base.href(URL_EXIT);
                                onError && onError(data);
                                return false;
                            } else if ((errorNumber < 0 && data.ERRORMESSAGE)
                                    || Number($(data).find("flag").attr("code")) < 0) {
                                onError && onError(data);
                                base.log(data.ERRORMESSAGE);
                                return false;
                            } else {
                                onSuccess && onSuccess(data);
                            }
                        } else {
                            // 不带错误码的情况,不处理,直接执行成功的回调
                            onSuccess && onSuccess(data);
                        }
                    }
                },
                error : that.defaultErrorHandle
            });
        },
        
        /**
         * 判断是否为debug模式,并提取debug模式的一系列配置参数
         * options必须有 debug: true 这一参数,debug模式才会生效
         */
        isDebug: function(options) {
            return GLOBAL_DEBUG && (options && options.debug && (options.debug === true));
        },
        
        /**
         * 执行预置的测试数据,来模拟接口返回
         * options中会包括以下参数:
         *   debug: true
         *   responseId: abc 指定response.js中的哪一个返回值
         *   fail: true 非必选,若有值,则强制走onError分支
         */
        debug: function(url, data, onSuccess, onError, options) {
            if (base.empty(options)) {
                return null;
            }
            var data = "";
            if (options.responseId) {
                data = response[options.responseId];
            }
            
            if (options.fail ) {
                onError && onError(data);
            } else {
                onSuccess && onSuccess(data);
            }
        }
    };


    exports.ajax = ajax;


    /**
     * 兼容AMD和非AMD规范
     */
    if (typeof define === "function" && define.amd) {
        if (GLOBAL_DEBUG) {
            define([ "jquery", "base", "/common/test/js/response.js"], function($, base, response) {
                return ajax;
            });
        } else {
            define([ "jquery", "base" ], function($, base) {
                return ajax;
            });
        }
    }
})(window);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值