Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery从url获取数组值_Javascript_Jquery_Url_Arrays_Get - Fatal编程技术网

Javascript jQuery从url获取数组值

Javascript jQuery从url获取数组值,javascript,jquery,url,arrays,get,Javascript,Jquery,Url,Arrays,Get,我有这样一个url: http://www.somewhere.com/index.html?field[]=history&field[]=science&field[]=math 使用jQuery,如何获取GET数组 谢谢。[] /* *返回querystring参数的映射 * *[]类型的键将自动添加到数组中 * *@param字符串url *@返回对象参数 */ 函数getParams(url){ var regex=/([^=&?]+)=([^&#]*)/g,par

我有这样一个url:

http://www.somewhere.com/index.html?field[]=history&field[]=science&field[]=math
使用jQuery,如何获取GET数组

谢谢。

[]
/*
*返回querystring参数的映射
* 
*[]类型的键将自动添加到数组中
*
*@param字符串url
*@返回对象参数
*/
函数getParams(url){
var regex=/([^=&?]+)=([^&#]*)/g,params={},parts,key,value;
while((parts=regex.exec(url))!=null){
键=零件[1],值=零件[2];
var isArray=/\[\]$/.test(键);
如果(isArray){
params[key]=params[key]| |[];
参数[key].push(值);
}
否则{
参数[键]=值;
}
}
返回参数;
}

您的底层HTML服务器是什么、PHP还是其他什么?服务器是PHP,我正在尝试基于jquery datatables过滤器过滤一个大表。。。所以我需要通过jquery将数组传递给过滤器才能工作。。。如果有意义的话。如果URL有一个命名的锚,则正则表达式将失败。可能会将
[^&]
更改为
[^&#]
。非常感谢您的提示,我已经更新了代码和url:)对于代码段,请在此处使用它:
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(", "))​​
/*
 * 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;
}