it-roy-ru.com

читать переменные GET в URL JQuery

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

16
Russell Parrott
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].

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

41
usoban

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

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

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

get["var1"]
3
Tiele Declercq

Вы можете использовать эту функцию, которая возвращает значение указанного имени переменной из 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;
}
0
ungalcrys