【问题标题】:jQuery get array values from urljQuery从url获取数组值
【发布时间】:2010-07-06 17:02:39
【问题描述】:

我有一个这样的网址:

http://www.somewhere.com/index.html?field[]=history&field[]=science&field[]=math

使用 jQuery,如何获取 GET 数组?

谢谢。

【问题讨论】:

  • 你的底层 HTML 服务器是什么,PHP 还是别的什么?
  • 服务器执行 PHP,我正在尝试基于 jquery 数据表过滤器过滤一个大表...所以我需要通过 jquery 传递数组以使过滤器工作...如果这使得感觉。

标签: javascript jquery url arrays get


【解决方案1】:

[See it in action]

var str = "http://www.somewhere.com/index.html?field[]=history&field[]=science&field[]=math";

var match = str.match(/[^=&?]+\s*=\s*[^&#]*/g);
var obj = {};

for ( var i = match.length; i--; ) {
  var spl = match[i].split("=");
  var name = spl[0].replace("[]", "");
  var value = spl[1];

  obj[name] = obj[name] || [];
  obj[name].push(value);
}

alert(obj["field"].join(", "))​​

【讨论】:

  • 如果 URL 有一个命名的锚,则该正则表达式会失败。可能会将[^&] 更改为[^&#]
  • 非常感谢您的提示,我已经更新了代码和网址。 :)
  • 感谢代码 sn-p,在这里使用它:stackoverflow.com/questions/15670317/…
【解决方案2】:
/*
 * Returns a map of querystring parameters
 * 
 * Keys of type <fieldName>[] will automatically be added to an array
 *
 * @param String url
 * @return Object parameters
 */
function getParams(url) {
    var regex = /([^=&?]+)=([^&#]*)/g, params = {}, parts, key, value;

    while((parts = regex.exec(url)) != null) {

        key = parts[1], value = parts[2];
        var isArray = /\[\]$/.test(key);

        if(isArray) {
            params[key] = params[key] || [];
            params[key].push(value);
        }
        else {
            params[key] = value;
        }
    }

    return params;
}

【讨论】:

    猜你喜欢
    • 2014-04-21
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    相关资源
    最近更新 更多