Как получить значение из параметров GET? - PullRequest
1138 голосов
/ 11 июня 2009

У меня есть URL с некоторыми параметрами GET следующим образом:

www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5 

Мне нужно получить полное значение c. Я пытался прочитать URL, но я получил только m2. Как мне сделать это с помощью JavaScript?

Ответы [ 53 ]

0 голосов
/ 02 октября 2018

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

  1. Разбор URL как объекта
  2. Извлечение части поиска параметров
  3. Преобразует searchParams из Итератора в Массив с расширением массива.
  4. Уменьшить массив ключ-значение в объект.

const url = 'http://www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5';
const params = [... new URL(url).searchParams.entries()]
  .reduce((a, c) => Object.assign(a, {[c[0]]:c[1]}), {})

console.log(params);
0 голосов
/ 19 сентября 2018

У меня была одна и та же проблема снова и снова. Сейчас многие пользователи здесь, теперь я известен своей работой HAX,

, поэтому я решаю это с помощью:

PHP:

echo "<p style="display:none" id=\"hidden-GET\">".$_GET['id']."</p>";

JS:

document.getElementById("hidden-GET").innerHTML;

Простой HAX, но работает.

0 голосов
/ 29 января 2015

Изучение многих ответов (например, VaMoose 's, Gnarf ' s или Blixt 's).

Вы можете создать объект (или использовать объект Location) и добавить метод, который позволяет вам получить параметры URL, декодированные и в стиле JS:

Url = {
    params: undefined,
    get get(){
        if(!this.params){
            var vars = {};
            if(url.length!==0)
                url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value){
                    key=decodeURIComponent(key);
                    if(typeof vars[key]==="undefined") {
                        vars[key]= decodeURIComponent(value);
                    }
                    else {
                        vars[key]= [].concat(vars[key], decodeURIComponent(value));
                    }
                });
            this.params = vars;
        }
        return this.params;
    }
};

Это позволяет вызывать метод только с использованием Url.get.

При первом получении объекта из URL-адреса, при следующем загрузке сохраненных.

Пример

В URL-адресе, подобном ?param1=param1Value&param2=param2Value&param1=param1Value2, параметры могут быть получены следующим образом:

Url.get.param1 //["param1Value","param1Value2"]
Url.get.param2 //"param2Value"
0 голосов
/ 13 июля 2018

Я пробовал много разных способов, но эта проверенная и правильная функция регулярного выражения работает для меня, когда я ищу значения параметров в URL, надеюсь, это поможет:

        var text = 'www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5'

        function QueryString(item, text){
            var foundString = text.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)","i"));
            return foundString ? foundString[1] : foundString;
        }

        console.log(QueryString('c', text));

используйте как QueuryString('param_name', url) и вернет значение

m2-m3-m4-m5

0 голосов
/ 29 марта 2018

В моем случае (перенаправление на новый домен со всеми под URL) ::

window.location.replace("https://newdomain.com" + window.location.pathname);
0 голосов
/ 07 ноября 2017
    function gup() {
    var qs = document.location.search;
    qs = qs.split('+').join(' ');
    var params = {}, tokens, re = /[?&]?([^=]+)=([^&]*)/g;
    while (tokens = re.exec(qs))
        params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
    return params;
}

используйте это как

var params = gup()

, а затем

params.param1
params.param2
0 голосов
/ 05 ноября 2017

вы можете запустить эту функцию

    function getUrlVars()
    {
        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 source = getUrlVars()["lm_supplier"];
    var el = source.toString();
    var result= decodeURI(el);

console.log(result)

эта функция получает то, что вы хотите от URL, var source = getUrlVars () ["положить то, что вы хотите получить из URL"];

0 голосов
/ 22 мая 2017

Я разработал инструмент JavaScript, чтобы сделать это за один простой шаг

Сначала скопируйте ссылку на этот скрипт в заголовок вашего HTML:

<script src="https://booligoosh.github.io/urlParams/urlParams.js"></script>

Затем просто получите значение c, используя urlParams.c или urlParams['c']. Простой!

Вы можете увидеть реальную демонстрацию, используя ваши значения здесь .

Также имейте в виду, что я это разработал, но это простое и беззаботное решение вашей проблемы. Этот инструмент также включает декодирование шестнадцатеричных символов, которое часто может быть полезным.

0 голосов
/ 02 октября 2013

Вот решение, которое я нахожу немного более читабельным, но для потребуется прокладка .forEach().

var getParams = function () {
  var params = {};
  if (location.search) {
    var parts = location.search.slice(1).split('&');

    parts.forEach(function (part) {
      var pair = part.split('=');
      pair[0] = decodeURIComponent(pair[0]);
      pair[1] = decodeURIComponent(pair[1]);
      params[pair[0]] = (pair[1] !== 'undefined') ?
        pair[1] : true;
    });
  }
  return params;
}
0 голосов
/ 07 октября 2016

Это работает:

function getURLParameter(name) {
  return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [null, ''])[1].replace(/\+/g, '%20')) || null;
}

Я не получил ни одного из лучших ответов на работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...