zoukankan      html  css  js  c++  java
  • Ext 重写url请求,对请求做统一处理

    Ext.Ajax.addListener("beforerequest", function(conn, options, eOpts ){
        if(options){
            var nParam = options.params;
            if (nParam != undefined) {
                //将form-data参数转为数组
                var arrParam = objTransArray(nParam);
                //新增时间戳
                var timestamp = new Date().getTime();
                arrParam.push("timestamp="+timestamp);
                nParam["timestamp"]=timestamp;
                // end
                //新增get请求的参数
                arrParam = addGetUrlParam(arrParam, options.url)
                //排序
                arrParam.sort();//排序 从小-大 ascii码
                //构建加密字符串
                var newP = newParamBuilder(arrParam);
                console.log("sign start");
                console.log(newP);
                console.log("sign end");
                //加密
                var sign = signBuild(newP);
                var headers = new Object();
                headers.verifyHeaderValue = sign;
                options.headers = headers;
                options.params = nParam;
            }
        }
    }, this);
    /**
     * obj对象转为数组
     * @param obj
     */
    function objTransArray(obj){
        var array = $.map(obj,function(value,key){
            if(value != null && value != "null" && value != "" && value !=undefined) {
                return [key + "=" + value];
            }
        });
        return array;
    }
    function addGetUrlParam(arr,url){
        var urlArr  = url.split("?");
        if(urlArr[1] != undefined){
            var subUrlArr = urlArr[1].split("&");
            for(var i=0; i< subUrlArr.length;i++){
                arr.push(subUrlArr[i])
            }
        }
        return arr;
    }
    
    function newParamBuilder(arr){
        var param = "";
        for(var i = 0;i < arr.length; i++) {
            if(i + 1 == arr.length) {
                param += arr[i] ;
            }else{
                param += arr[i] + "123#&%678";
            }
        }
        return param;
    }
    
    /**
     * 生成校验值
     * @param arr
     * @returns {*}
     */
    function signBuild(param){
        return $.md5(param);//依赖jquery.md5.js
    }
    

      

  • 相关阅读:
    那些容易忽略的事4-(正则表达式反向引用 )
    那些容易忽略的事3-(变量提升和函数提升)
    那些容易忽略的事(2)
    那些容易忽略的事(1) -变量与运算符+
    call()与apply()传参需要注意的一点
    CSS凹型导航按钮
    动态的99乘法表
    js中的for-of循环遍历数组
    交换2个变量的值
    gl.disableVertexArray P77 关闭location指定的attribute变量
  • 原文地址:https://www.cnblogs.com/zf-crazy/p/14356316.html
Copyright © 2011-2022 走看看