Получение GET переменной из URL'а в JS

305
16 марта 2017, 22:25

Как с помощью JS считать GET переменную которая находится в URL'е? Например: http://site.ru?data=value

Answer 1
// Выставим нужный URL для теста с помощью History API
history.replaceState({}, '', '/test?param=value&param2=42&keyonly');
// location.search === '?param=value&param2=42&keyonly'
var search = location.search.substr(1)
  .split('&') // разбиваем на параметры
  .reduce(function (res, a) { // разбираем пары ключ-значение
    var t = a.split('=');
    // нужно декодировать и ключ и значение, значения может не быть
    res[decodeURIComponent(t[0])] = t.length == 1 ? null : decodeURIComponent(t[1]);
    return res;
  }, {});
console.log(search); // {"param":"value","param2":"42","keyonly":null}

JSFiddle

Answer 2

Можно использовать URLSearchParams. Данный пример считывает все переменные.

urlParams = new URLSearchParams(window.location.search);
params = {};
urlParams.forEach((p, key) => {
  params[key] = p;
});

Затем параметр data будет доступен в params.data.

Answer 3

Можете использовать объект location и его поля для доступа к url

// www.example.com?data=value
console.log(location.href); // www.example.com?data=value
console.log(location.search) // ?data=value
Answer 4
function $_GET(key) {
    var s = window.location.search;
    s = s.match(new RegExp(key + '=([^&=]+)'));
    return s ? s[1] : false;
};

Затем можно получать нужную переменную из вашего примера через

$_GET('data')

Касаемо URLSearchParams в одном из ответов, приведу ссылку на caniuse.

READ ALSO
Как выбрать все option в select multiple на angular?

Как выбрать все option в select multiple на angular?

Нужно сделать так что бы первоначально были выбраны все возможные option; Как это сделать? если я поставлю просто selected, ангуляру будет поровну

440
Свой текстовый редактор

Свой текстовый редактор

Хочу написать свой текстовый редактор, но не знаю даже с чего начатьЯ так понимаю что мне нужна консоль или поле ввода на подобии textedit(textview),...

305
Задача с Codility. Математика. Помогите решить.? [требует правки]

Задача с Codility. Математика. Помогите решить.? [требует правки]

В ряд стоит класс из N учениковНужно сфотографировать студентов, но по эстетическим соображениям вы хотите, чтобы они были упорядочены в порядке...

321