Подтвердить что ты не робот

Как получить строку запроса javascript?

Как извлечь строку запроса из URL-адреса в javascript?

Спасибо!

4b9b3361

Ответ 1

Вы можете легко создать коллекцию стиля словаря...

function getQueryStrings() { 
  var assoc  = {};
  var decode = function (s) { return decodeURIComponent(s.replace(/\+/g, " ")); };
  var queryString = location.search.substring(1); 
  var keyValues = queryString.split('&'); 

  for(var i in keyValues) { 
    var key = keyValues[i].split('=');
    if (key.length > 1) {
      assoc[decode(key[0])] = decode(key[1]);
    }
  } 

  return assoc; 
} 

И используйте его вот так...

var qs = getQueryStrings();
var myParam = qs["myParam"]; 

Ответ 2

Если вы ссылаетесь на URL-адрес в адресной строке, то

window.location.search

предоставит вам только часть строки запроса. Обратите внимание, что это включает знак вопроса в начале.

Если вы ссылаетесь на любой случайный URL-адрес, хранящийся в (например) строке, вы можете получить строку запроса, взяв подстроку, начинающуюся с индекса первого знака вопроса, выполнив что-то вроде:

url.substring(url.indexOf("?"))

Предполагается, что любые вопросительные знаки в фрагментарной части URL-адреса были правильно закодированы. Если в конце есть цель (т.е. #, За которой следует id элемента DOM), он также включит это.

Ответ 3

Здесь используется метод...

function Querystring() {
    var q = window.location.search.substr(1), qs = {};
    if (q.length) {
        var keys = q.split("&"), k, kv, key, val, v;
        for (k = keys.length; k--; ) {
            kv = keys[k].split("=");
            key = kv[0];
            val = decodeURIComponent(kv[1]);
            if (qs[key] === undefined) {
                qs[key] = val;
            } else {
                v = qs[key];
                if (v.constructor != Array) {
                    qs[key] = [];
                    qs[key].push(v);
                }
                qs[key].push(val);
            }
        }
    }
    return qs;
}

Он возвращает объект строк и массивов и, похоже, работает достаточно хорошо. (Строки для одиночных ключей, массивы для одного и того же ключа с несколькими значениями.)

Ответ 4

Вам нужно просто использовать следующую функцию.

function GetQueryStringByParameter(name) {
        name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
        return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
    }

--- Как использовать ---

var QueryString= GetQueryStringByParameter('QueryString');

Ответ 5

Очень прямолинейно!

function parseQueryString(){
    var assoc = {};
    var keyValues = location.search.slice(1).split('&');
    var decode = function(s){
        return decodeURIComponent(s.replace(/\+/g, ' '));
    };

    for (var i = 0; i < keyValues.length; ++i) {
        var key = keyValues[i].split('=');
        if (1 < key.length) {
            assoc[decode(key[0])] = decode(key[1]);
        }
    }

    return assoc;
}

Ответ 6

Работает для меня -

function querySt(Key) {

    var url = window.location.href;

    KeysValues = url.split(/[\?&]+/); 

    for (i = 0; i < KeysValues.length; i++) {

            KeyValue= KeysValues[i].split("=");

            if (KeyValue[0] == Key) {

                return KeyValue[1];

        }

    }

}

function GetQString(Key) {     

    if (querySt(Key)) {

         var value = querySt(Key);

         return value;        

    }

 }

Ответ 7

В браузерах есть новый API под названием URLSearchParams, который позволяет извлекать и изменять значения строки запроса.

В настоящее время он поддерживается в Firefox 44+, Chrome 49+ и Opera 36 +.

Initialize/вход

Чтобы начать работу, создайте новый объект URLSearchParams. Для текущих реализаций вам нужно удалить "?" в начале строки запроса, используя slice(1) в querystring, как предлагает Джейк Арчибальд:

var params = new URLSearchParams(window.location.search.slice(1)); // myParam=12

В последующих реализациях вы сможете использовать его без фрагмента:

var params = new URLSearchParams(window.location.search); // myParam=12

Get

Вы можете получить параметры из него с помощью метода .get:

params.get('myParam'); // 12

Set

Парамы можно изменить с помощью .set:

params.set('myParam', 'newValue');

Выход

И если текущая повторная процедура необходима снова, метод .toString предоставляет ее:

params.toString(); // myParam=newValue

В этом API есть хост других методов.

Polyfill

Поскольку поддержка браузера по-прежнему довольно тонкая, есть small polyfill от Andrea Giammarchi (< 3kB).

Ответ 8

Вы можете использовать этот Javascript:

function getParameterByName(name) {
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

ИЛИ

Вы также можете использовать плагин jQuery-URL-Parser позволяет извлекать все части URL-адреса, включая якорь, хост и т.д.

Использование очень простое и классное:

$.url().param("itemID")

через Джеймса и Альфа

Ответ 9

Я использую этот метод

function getString()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
    hash = hashes[i].split('=');
    vars.push(hash[0]);
    vars[hash[0]] = hash[1];
}
return vars;
}
var buisnessArea = getString();