如何使用JavaScript获取所有Query字符串值

时间:2011-10-11 07:28:37

标签: javascript query-string

我想从URL获取查询字符串的所有参数的值。

示例:www.xyz.com?author=bloggingdeveloper&a1=hello

我希望使用JavaScript获取authora1参数的值。

10 个答案:

答案 0 :(得分:4)

最简单的方法是: -

const search = /*your search query ex:-?author=bloggingdeveloper&a1=hello*/
const params = new URLSearchParams(search);
let paramObj = {};
for(var value of params.keys()) {
     paramObj[value] = params.get(value);
 }

如果您控制paramObj,您将获得: -

{
author: bloggingdeveloper,
a1: hello
}

简单!!

参考: - https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/keys

答案 1 :(得分:3)

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

var author = getUrlVars()["author"];
var a1 = getUrlVars()["a1"];

答案 2 :(得分:2)

我发现了这个问题并开始使用TimT建议的答案,但发现我会遇到我的URL并不总是有查询字符串的情况。 TimT的函数只会返回URL,但我发现从查询字符串返回一个变量数组更好或者只是返回false以便于检查。

我进一步将其更改为使用window.location.search,因为查询字符串已经提供给我们而无需将其分开。

function getUrlVars() {
    var vars = [], hash;
    var query_string = window.location.search;

    if (query_string) {
        var hashes = query_string.slice(1).split('&');
        for (var i = 0; i < hashes.length; i++) {
            hash = hashes[i].split('=');
            vars[hash[0]] = hash[1];
        }

        return vars;
    } else {
        return false;
    }
}

答案 3 :(得分:0)

使用

var get_vars = window.location.search;
var patt1 = /author\=(.+)\&/;
alert(get_vars.match(patt1)[1]);

上面的代码就像那样

仅将来自域的查询字符串加载到get_vars变量中
然后将正则表达式模式分配到patt1中,该模式可以匹配作者变量及其值; s值
最后提醒匹配的用户名

答案 4 :(得分:0)

          var search = function() {
          var p = window.location.search.substr(1).split(/\&/), l = p.length, kv, r = {};
          while (l--) {
             kv = p[l].split(/\=/);
             r[kv[0]] = kv[1] || true; //if no =value just set it as true
          }
             return r;
          }();

答案 5 :(得分:0)

您可以使用以下内容:

function parseQuerystring(){
    var foo = window.location.href.split('?')[1].split('#')[0].split('&');
    var dict = {};
    var elem = [];
    for (var i = foo.length - 1; i >= 0; i--) {
        elem = foo[i].split('=');
        dict[elem[0]] = elem[1];
    };
    return dict;
};

函数从查询字符串返回JS-object。

//www.xyz.com?author=bloggingdeveloper&a1=hello
>parseQuerystring()
{
  author: bloggingdeveloper,
  a1: hello
}

答案 6 :(得分:0)

试试这个:

function urlParameter() {
    var url = window.location.href,
    retObject = {},
    parameters;

    if (url.indexOf('?') === -1) {
        return null;
    }

    url = url.split('?')[1];

    parameters = url.split('&');

    for (var i = 0; i < parameters.length; i++) {
        retObject[parameters[i].split('=')[0]] = parameters[i].split('=')[1];
    }

    return retObject;
}

输出json对象:

{
     author : 'bloggingdeveloper',
     a1 : 'hello'
}

获取特定值:

var author = urlParameter().author;
alert(author);

答案 7 :(得分:0)

这会存储URL参数,因此效率很高(授予它使用全局:-():

var urlParams = {};
(function () {
    var e,
    a = /\+/g,  // Regex for replacing addition symbol with a space
    r = /([^&=]+)=?([^&]*)/g,
    d = function (s) {
        return decodeURIComponent(s.replace(a, " "));
    },
    q = window.location.search.substring(1);

    while (e = r.exec(q))
        urlParams[d(e[1])] = d(e[2]);
})();

答案 8 :(得分:0)

如果您要与优秀的开发人员打交道,我认为这并不是太复杂。将迭代器从param.keys()转换为数组,以便可以使用reduce。

const params = new URLSearchParams(window.location.search);

const paramsObj = Array.from(params.keys()).reduce(
  (acc, val) => ({ ...acc, [val]: params.get(val) }),
  {}
);

答案 9 :(得分:0)

在类似Sign In | Sign Out 1/1/18 9:00 AM | 1/1/18 10:30 AM 1/1/18 10:16 AM | 1/1/18 11:46 AM 1/1/18 10:18 AM | 1/1/18 11:48 AM 1/1/18 10:29 AM | 1/1/18 11:59 AM 1/1/18 10:30 AM | 1/1/18 12:00 PM 1/1/18 10:33 AM | 1/1/18 12:03 PM 1/1/18 11:27 AM | 1/1/18 12:57 PM 1/1/18 11:36 AM | 1/1/18 1:06 PM 1/1/18 11:37 AM | 1/1/18 1:07 PM 1/1/18 11:51 AM | 1/1/18 1:21 PM 1/1/18 11:52 AM | 1/1/18 1:22 PM 的URL上设置标识,然后将其作为参数发送以调用该函数并使用URLSearchParams