читать переменные GET в URL JQuery - PullRequest
16 голосов
/ 28 декабря 2010

Извините за еще один "простой" вопрос, но есть ли простой способ прочитать переменные GET из URL. пример. У меня есть URL http://www.domain.com/page.php?var1=1 В моем случае у меня будет только 1 переменная, т.е. var1 или var2 (переменная может изменяться, но на URL будет приходиться только каждая) Все, что я видел, относятся к массивам, а не к «одиночкам». Хорошо, я знаю, что решение с массивами может быть лучше, но это всего лишь простая переменная get. Какие-либо предложения? Заранее спасибо

Ответы [ 3 ]

41 голосов
/ 28 декабря 2010
var split = location.search.replace('?', '').split('=')

split[0] - ваше имя переменной, а split[1] - ваше значение переменной. Вам на самом деле не нужен jQuery для этого куска кода;)

Что касается комментария Twiz, разделение нескольких переменных может быть сделано так:

var split = location.search.replace('?', '').split('&').map(function(val){
  return val.split('=');
});

Вы можете получить доступ к имени переменной по split[index][0] и значению по split[index][1].

Конечно, вы можете использовать второй фрагмент вместо первого и для одной переменной.

4 голосов
/ 01 апреля 2014

Я использую это в своем файле JavaScript по умолчанию.

var get = [];
location.search.replace('?', '').split('&').forEach(function (val) {
    split = val.split("=", 2);
    get[split[0]] = split[1];
});

Теперь вы можете использовать их по имени:

get["var1"]
0 голосов
/ 12 июня 2014

Вы можете использовать эту функцию, которая возвращает значение указанного имени переменной из URL, если переменная существует. В противном случае вы получите пустую строку.

function getUrlValue(varName) {
    var split = $(location).attr('href').split('?');
    var value = '';
    if (split.length == 2) {
        split = split[1].split('&');
        for (var i = 0; i < split.length; i+=1) {
            var keyValue = split[i].split('=');
            if (keyValue.length == 2 && keyValue[0] == varName) {
                value = keyValue[1];
                break;
            }
        }
    }
    return value;
}
...