Loading

前端拼接跳转链接带参数

function getRequest() {
    let search = window.location.search;
    search = decodeURI(search);

    let map = new Map();
    if (search.indexOf('?') != -1) {

        let strs = search.substr(1).split('&');
        for (let str of strs) {
            let key = decodeURIComponent(str.split('=')[0].replace(/\s/g, ""));
            let value = decodeURIComponent(str.split('=')[1].replace(/\s/g, ""));
            map.set(key, String(value));
        }
    }

    return map;
}

function setRequest(prefix, map) {
    let search = '';
    for (let [key, value] of map) {
        if (key != null && value != null) {
            key = encodeURIComponent(key);
            value = encodeURIComponent(value);
            search += `&${key}=${value}`;
        }
    }

    return encodeURI(url + '?' + search.substr(1));
}

/*
encodeURIComponent:会转义特殊符号,用在外层则特殊符号也转义
encodeURI:不会转义特殊符号,用在内层如果字段有特殊符号不转移会导致解析时无法分割
/   -> %2F
?   -> %3F
&   -> %26
=   -> %3D
#   -> %23
空格 -> %20
%   -> %25

 */

// eg

let map = new Map();
map.set('a', '1');
map.set('b', 1);
map.set('c', true);
location.href = setRequest('wwww.baidu.com', map);

let map1 = getRequest();
let a1 = map1.get('a');
let b1 = map1.get('b');
let c1 = map1.get('c');
posted @ 2021-06-03 22:01  n031  阅读(594)  评论(0编辑  收藏  举报