2011-02-10 24 views
7

我有一堆参数被URL变量传递给页面。该URL看起来有点像:在javascript中获取URL数组变量/ jquery

file.aspx类别[] = 1个&类别[] = 7 &类别[] = 3 & ID = 8az

使用jQuery getUrlParam扩展,我可以得到URL变量非常容易,但不是返回类别作为数组(这是我想要的)它返回为null。

有没有一种方法可以让我将这些读入javascript数组中?

回答

1

它不应该是:file.aspx?category=1&category=7&category=3

3

我以前指出这个问题:Get QueryString values with jQuery - 但@Crescent新鲜指出,这些例子不与查询字符串数组处理(再说,他们有点慢,我认为

。所以我做了我的版本的功能:

function getQueryString() { 
    var ret = {}; 
    var parts = (document.location.toString().split('?')[1]).split('&'); 
    for (var i = 0; i < parts.length; i++) { 

     var p = parts[i].split('='); 
     // so strings will be correctly parsed: 
     p[1] = decodeURIComponent(p[1].replace(/\+/g, " ")); 

     if (p[0].search(/\[\]/) >= 0) { // then it's an array 
      p[0] = p[0].replace('[]',''); 

      if (typeof ret[p[0]] != 'object') ret[p[0]] = []; 
      ret[p[0]].push(p[1]); 
     } else { 
      ret[p[0]] = p[1]; 
     } 
    } 
    return ret; 
} 

但有警告它只会在正确的形成的查询字符串的工作 - 有没有错误检测此外,这是行不通的编号/索引数组。 。那就是当你的数组在查询字符串中被定义为:

?category[3]=1&category[4]=7&category[20]=3&id=8az 

将.search()查询添加到正则表达式以找到该错误也是微不足道的,但我不是最好的正则表达式专家......任何人都有想法?

+1

没有一个统一的答案会有做的OP是要求(在查询字符串即阵列检测)。 – 2011-02-11 04:27:20

+0

你是对的。我没有意识到 - 我只是看到了一个复杂的功能,我认为一些复杂的事情必须做正确的事情......但事实并非如此。我添加了我的版本。 – arnorhs 2011-02-11 09:20:55