Получить два параметра URL - но нужно сохранить & символ

Мне нужно получить два параметра из URL, и они могут содержать символ & или пробел. как часть строки поиска.

Пример: mysite.com?param1=Bower & Wilkins?param2=Speakers

Я понимаю, что Bower & Wilkins содержит очевидный символ для получения второго параметра, но могу ли я заменить его чем-то другим?

При попытке использования этой функции можно легко вернуть один параметр:

URL: mysite.com?param1=Bower%20&%20Wilkins

function getQueryStringValue(key) {
  return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURIComponent(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^]*))?)?.*$", "i"), "$1"));
}
var param1 = getQueryStringValue("param1"); // Bower & Wilkins

Как я могу получить второй параметр и как я должен построить URL. Могу ли я использовать другой символ, кроме &, для перечисления второго параметра?

Что мне нужно:

var param1 = getQueryStringValue("param1"); // Bower & Wilkins

var param2 = getQueryStringValue("param2"); // Speakers

1 ответ

Решение

& в параметре должен быть закодирован как %26, Это означает, что вам нужно заменить перед запуском параметров через encodeURI или использовать encodeURIComponent для значения.

Вход должен быть "mysite.com?param1=Bower%20%26%20Wilkins&param2=Speakers",

Чтобы получить результат, вы можете попробовать что-то вроде этого

function getQueryStringValue(url, key) {
    var params = {};
    var url_params = url.split("?", 2);
    if (url_params.length > 1) {
        var param_list = url_params[1].split("&");
        param_list.map(function (param_str) {
            var kv = param_str.split("=", 2);
            params[kv[0]] = kv[1];
        });
    }
    return (key in params)? decodeURIComponent(params[key]) : ''
}

var url = "mysite.com?param1=Bower%20%26%20Wilkins&param2=Speakers";
console.log("Bower & Wilkins" === getQueryStringValue(url, "param1"));
console.log("Speakers" === getQueryStringValue(url, "param2"));
console.log("" === getQueryStringValue(url, "param3"));
Другие вопросы по тегам