【问题标题】:Get querystring array values in Javascript [duplicate]在Javascript中获取查询字符串数组值[重复]
【发布时间】: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?),但它们似乎只处理参数而不是数组。

是否可以获取数组值?

【问题讨论】:

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

标签: javascript arrays forms parameters query-string


【解决方案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);”让这个功能发挥作用。
  • 有没有办法将整个查询字符串作为对象返回而不是传递参数?
  • 我也需要这个来匹配空字符串,请问有人可以更新吗?
  • 什么意思?
猜你喜欢
  • 2013-01-05
  • 2013-06-19
  • 2018-07-07
  • 2015-01-16
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
相关资源
最近更新 更多