美文网首页
jq地址栏传参与接收参数

jq地址栏传参与接收参数

作者: 前端勾魂师 | 来源:发表于2020-05-07 13:22 被阅读0次

传参文件:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>jq路由传参</title>
        <script src="../assets/js/jquery_2.1.4.min.js" type="text/javascript" charset="utf-8"></script>
        <script src="../assets/js/jqExpand.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function(){
                $("button").click(function() {
                    var testObj = {
                        name: "xxx",
                        age: 22,
                        country: "中国"
                    }
                    // console.log(urlEncode(testObj))
                    window.location.href = "jq接收路由参数.html?" + urlEncode(testObj)
                })
            })
        </script>
    </head>
    <body>
        <button type="button">点我携带参数跳转到子页面</button>
    </body>
</html>

接收参数:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>jq接收路由参数</title>
        <script src="../assets/js/jquery_2.1.4.min.js" type="text/javascript" charset="utf-8"></script>
        <script src="../assets/js/jqExpand.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function(){
                var obj = GetRequest();
                // console.log(obj)
                var show = ""
                Object.keys(obj).map((key)=>{
                    console.log(obj[key])
                    show += "<p>" + obj[key] + "</p>"
                }) 
                document.write(show)
            })
        </script>
    </head>
    <body>
        
    </body>
</html>

自己封装的扩展文件(jqExpand):

/**
 * paramObj 将要转为URL参数字符串的对象
 * key URL参数字符串的前缀
 * encode true/false 是否进行URL编码,默认为true
 * js实现
 * return URL参数字符串
 */
var urlEncode = function(paramObj, key, encode) {
    if (paramObj == null) return '';
    var paramStr = '';
    var t = typeof(paramObj);
    if (t == 'string' || t == 'number' || t == 'boolean') {
        paramStr += '&' + key + '=' + ((encode == null || encode) ? encodeURIComponent(paramObj) : paramObj);
    } else {
        for (var i in paramObj) {
            var k = key == null ? i : key + (paramObj instanceof Array ? '[' + i + ']' : '.' + i);
            paramStr += urlEncode(paramObj[i], k, encode);
        }
        // console.log(paramStr)
        paramStr = paramStr.replace(/^&/g, "")
    }
    return paramStr;
};

//根据参数名称获取url参数
function getUrlParamValue(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return decodeURIComponent(r[2]);
    return null;
}


//获取url参数封装成对象
function GetRequest() {
    var url = location.search; //获取url中"?"符后的字串
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for (var i = 0; i < strs.length; i++) {
            theRequest[strs[i].split("=")[0]] = decodeURIComponent((strs[i].split("=")[1]));
        }
    }
    return theRequest;
}

相关文章

网友评论

      本文标题:jq地址栏传参与接收参数

      本文链接:https://www.haomeiwen.com/subject/hszoghtx.html