在Javascript中获取查询字符串数组值[重复]

Posted

技术标签:

【中文标题】在Javascript中获取查询字符串数组值[重复]【英文标题】:Get querystring array values in Javascript [duplicate] 【发布时间】:2013-03-29 17:55:18 【问题描述】:

我有一个使用 get 方法并包含一个数组的表单:

http://www.example.com?name[]=hello&name[]=world

我正在尝试使用 javascript 或 jQuery 检索数组值 'hello' 和 'world'。

我在 Stack Overflow 上看过类似的解决方案(例如 How can I get query string values in JavaScript?),但它们似乎只处理参数而不是数组。

是否可以获取数组值?

【问题讨论】:

您发布的链接中的答案***.com/a/3855394/295783 也适用于您的情况,除非您提到数组和使用 [] 明确一点:URL 没有 arrays 的概念。您所拥有的只是具有相同名称的多个参数。 [] 通常用于 php 服务器,然后将使用这些参数创建数组。其他语言(例如 Python)可以处理多个具有相同名称(并且没有 [])的参数就好了。 从您链接到的问题中,您可能会发现此答案很有帮助:***.com/a/9362596/218196。 好的,谢谢大家。抱歉,我认为这是一个数组。 'name' 是一个复选框表单,因此可以使用相同的名称发送多个值。 【参考方案1】:

你去:http://jsfiddle.net/mm6Bt/1/

function getURLParam(key,target)
    var values = [];
    if (!target) target = location.href;

    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");

    var pattern = key + '=([^&#]+)';
    var o_reg = new RegExp(pattern,'ig');
    while (true)
        var matches = o_reg.exec(target);
        if (matches && matches[1])
            values.push(matches[1]);
         else 
            break;
        
    

    if (!values.length)
        return null;   
     else 
        return values.length == 1 ? values[0] : values;
    


var str = 'http://www.example.com?name[]=hello&name[]=world&var1=stam';

console.log(getURLParam('name[]',str));
console.log(getURLParam('var1',str));

【讨论】:

经过一番挣扎,我发现如果它是一个数组,我们需要在 name 后面加上 [] !现在看起来很明显,但不知何故我浪费了一个小时来注意到它。 另外,我将第 4 行替换为:“target = decodeURIComponent(location.search);”让这个功能发挥作用。 有没有办法将整个查询字符串作为对象返回而不是传递参数? 我也需要这个来匹配空字符串,请问有人可以更新吗? 什么意思?

以上是关于在Javascript中获取查询字符串数组值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从javascript中的键和字符串值获取objectId [重复]

如何在对象数组中获取 1 到 n 键值并将它们推送到新数组?(Javascript)[重复]

如何从包含 JavaScript 中重复项的数组中获取唯一值数组? [复制]

如何在Javascript中从数组中提取值

如何从对象数组中获取键值列表-JavaScript [重复]

通过属性值从对象数组中获取JavaScript对象[重复]