首页 > 技术文章 > 获取url中的参数,函数封装,随拿随用

guolintao 2018-05-24 10:16 原文

获取

   function getAllUrlParams(url) {
        var queryString = url ? url.split('?')[1] : window.location.search.slice(1);
        var obj = {};
        if (queryString) {
            queryString = queryString.split('#')[0];
            var arr = queryString.split('&');

            for (var i = 0; i < arr.length; i++) {
                var a = arr[i].split('=');
                var paramNum = undefined;
                var paramName = a[0].replace(/\[\d*\]/, function (v) {
                    paramNum = v.slice(1, -1);
                    return '';
                });

                // 设置参数值(如果为空则设置为true)
                var paramValue = typeof(a[1]) === 'undefined' ? true : a[1];
                // paramName = paramName.toLowerCase();
                // paramValue = paramValue.toLowerCase();
                if (obj[paramName]) {
                    if (typeof obj[paramName] === 'string') {
                        obj[paramName] = [obj[paramName]];
                    }
                    if (typeof paramNum === 'undefined') {
                        obj[paramName].push(paramValue);
                    }
                    else {
                        obj[paramName][paramNum] = paramValue;
                    }
                }
                else {
                    obj[paramName] = paramValue;
                }
            }
        }
        return obj;
    }

console.log(getAllUrlParams('http://display.intdmp.com/site_login_ijf.htm?app_key=adhu3e534be06456426b'));//{app_key: "adhu3e534be06456426b"}

把对象形式拼成url参数形式,函数封装

        function toQueryPair(key, value, bo) {
            if (typeof value === 'undefined') {
                return key;
            }
            return key + '=' + (bo ? encodeURIComponent(value === null ? '' : String(value)) : value === null ? '' : String(value));
        }

        const toBodyString = function (obj, bo = true) {
            let ret = [];
            for (let key in obj) {
                let values = obj[key];
                if (values && values.constructor === Array) { //数组
                    let queryValues = [];
                    for (let i = 0, len = values.length, value; i < len; i++) {
                        value = values[i];
                        queryValues.push(toQueryPair(key, value));
                    }
                    ret = ret.concat(queryValues);
                } else { //字符串
                    ret.push(toQueryPair(key, values, bo));
                }
            }
            return ret.join('&');
        }

console.log(toBodyString({a:123546,b:'fdfdfd',c:'9999'}));  //a=123546&b=fdfdfd&c=9999

推荐阅读