2013-04-07 3 views
10

У меня есть форма, которая использует метод GET и содержит массив:Получить строку запроса массив значений в JavaScript,

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

Я пытаюсь получить массив значений «привет» и «мир» с помощью JavaScript или JQuery.

Я рассмотрел аналогичные решения по переполнению стека (например, How can I get query string values in JavaScript?), но они, похоже, имеют дело только с параметрами, а не с массивами.

Можно ли получить значения массива?

+1

Ответ http://stackoverflow.com/a/3855394/295783 в ссылке вы публикуемую будет работать в вашем случае тоже, если Parms не повторить предложенный вами упоминание массива и использование [] – mplungjan

+1

Просто чтобы быть ясным: URL-адрес не имеет понятий * массивов *. Все, что у вас есть, - это несколько параметров с тем же именем. '[]' Обычно используются для серверов PHP, которые затем будут создавать массивы из этих параметров. Другие языки (например, Python) могут обрабатывать несколько параметров с тем же именем (и без '[]') просто отлично. –

+2

С вопросом, с которым вы связались, вы можете найти этот ответ полезным: http://stackoverflow.com/a/9362596/218196. –

ответ

11

Там вы идете: 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)); 
+0

Большое спасибо, Adidi. Это идеально! :) – iltdev

+0

Вы очень признательны. ^^ – Adidi

+0

После долгих попыток я понял, что нам нужно добавить [], чтобы назвать, если это массив! теперь выглядит очевидным, но почему-то я потратил час, чтобы заметить это. –

Смежные вопросы