获取两个URL参数——但需要保留&符号
Get two URL parameters - but need to preserve & symbol
我需要从 URL 中获取两个参数,它们可能包含 & 符号或 space。作为搜索字符串的一部分。
示例:mysite.com?param1=Bower & Wilkins?param2=Speakers
我知道 Bower & Wilkins 包含用于获取第二个参数的明显符号,但我可以用其他东西替换它吗?
在尝试这个功能时,可以轻松return一个参数:
URL: mysite.com?param1=Bower%20&%20Wilkins
function getQueryStringValue(key) {
return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\?]" + encodeURIComponent(key).replace(/[\.\+\*]/g, "\$&") + "(?:\=([^]*))?)?.*$", "i"), ""));
}
var param1 = getQueryStringValue("param1"); // Bower & Wilkins
如何获取第二个参数以及如何构造 URL。我可以使用 & 以外的其他符号来列出第二个参数吗?
我需要的:
var param1 = getQueryStringValue("param1"); // Bower & Wilkins
var param2 = getQueryStringValue("param2"); // Speakers
参数中的&
需要编码为%26
。这意味着你需要替换
在 运行 参数之前通过 encodeURI 或在值上使用 encodeURIComponent。
输入应为"mysite.com?param1=Bower%20%26%20Wilkins¶m2=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¶m2=Speakers";
console.log("Bower & Wilkins" === getQueryStringValue(url, "param1"));
console.log("Speakers" === getQueryStringValue(url, "param2"));
console.log("" === getQueryStringValue(url, "param3"));
我需要从 URL 中获取两个参数,它们可能包含 & 符号或 space。作为搜索字符串的一部分。
示例:mysite.com?param1=Bower & Wilkins?param2=Speakers
我知道 Bower & Wilkins 包含用于获取第二个参数的明显符号,但我可以用其他东西替换它吗?
在尝试这个功能时,可以轻松return一个参数:
URL: mysite.com?param1=Bower%20&%20Wilkins
function getQueryStringValue(key) {
return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\?]" + encodeURIComponent(key).replace(/[\.\+\*]/g, "\$&") + "(?:\=([^]*))?)?.*$", "i"), ""));
}
var param1 = getQueryStringValue("param1"); // Bower & Wilkins
如何获取第二个参数以及如何构造 URL。我可以使用 & 以外的其他符号来列出第二个参数吗?
我需要的:
var param1 = getQueryStringValue("param1"); // Bower & Wilkins
var param2 = getQueryStringValue("param2"); // Speakers
参数中的&
需要编码为%26
。这意味着你需要替换
在 运行 参数之前通过 encodeURI 或在值上使用 encodeURIComponent。
输入应为"mysite.com?param1=Bower%20%26%20Wilkins¶m2=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¶m2=Speakers";
console.log("Bower & Wilkins" === getQueryStringValue(url, "param1"));
console.log("Speakers" === getQueryStringValue(url, "param2"));
console.log("" === getQueryStringValue(url, "param3"));