Javascript 如何从get参数中获取值?
我有一个URL,其中包含一些GET参数,如下所示:Javascript 如何从get参数中获取值?,javascript,url,url-parameters,Javascript,Url,Url Parameters,我有一个URL,其中包含一些GET参数,如下所示: www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5 我需要得到c的全部值。我试图读取URL,但只得到了m2。如何使用JavaScript实现这一点?JavaScript本身没有处理查询字符串参数的内置功能 在(现代)浏览器中运行的代码您可以使用(这是浏览器提供给JS的API的一部分): var url\u字符串=”http://www.example.com/t.html?a=1&b=3&c
www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5
我需要得到c
的全部值。我试图读取URL,但只得到了m2
。如何使用JavaScript实现这一点?JavaScript本身没有处理查询字符串参数的内置功能
在(现代)浏览器中运行的代码您可以使用(这是浏览器提供给JS的API的一部分):
var url\u字符串=”http://www.example.com/t.html?a=1&b=3&c=m2-m3-m4-m5”//window.location.href
var url=新的url(url\u字符串);
var c=url.searchParams.get(“c”);
控制台日志(c)代码>JavaScript本身没有处理查询字符串参数的内置代码
在(现代)浏览器中运行的代码您可以使用(这是浏览器提供给JS的API的一部分):
var url\u字符串=”http://www.example.com/t.html?a=1&b=3&c=m2-m3-m4-m5”//window.location.href
var url=新的url(url\u字符串);
var c=url.searchParams.get(“c”);
控制台日志(c)代码>您可以在位置中获取查询字符串。搜索
,然后您可以分割问号后的所有内容:
var params = {};
if (location.search) {
var parts = location.search.substring(1).split('&');
for (var i = 0; i < parts.length; i++) {
var nv = parts[i].split('=');
if (!nv[0]) continue;
params[nv[0]] = nv[1] || true;
}
}
// Now you can get the parameters you want like so:
var abc = params.abc;
var params={};
if(location.search){
var parts=location.search.substring(1).split('&');
对于(变量i=0;i
您可以在位置获取查询字符串。搜索
,然后您可以分割问号后的所有内容:
var params = {};
if (location.search) {
var parts = location.search.substring(1).split('&');
for (var i = 0; i < parts.length; i++) {
var nv = parts[i].split('=');
if (!nv[0]) continue;
params[nv[0]] = nv[1] || true;
}
}
// Now you can get the parameters you want like so:
var abc = params.abc;
var params={};
if(location.search){
var parts=location.search.substring(1).split('&');
对于(变量i=0;i
我见过的大多数实现都忽略了URL对名称和值的解码
下面是一个通用实用程序函数,它还可以执行正确的URL解码:
function getQueryParams(qs) {
qs = qs.split('+').join(' ');
var params = {},
tokens,
re = /[?&]?([^=]+)=([^&]*)/g;
while (tokens = re.exec(qs)) {
params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
}
return params;
}
//var query = getQueryParams(document.location.search);
//alert(query.foo);
我见过的大多数实现都忽略了URL对名称和值的解码
下面是一个通用实用程序函数,它还可以执行正确的URL解码:
function getQueryParams(qs) {
qs = qs.split('+').join(' ');
var params = {},
tokens,
re = /[?&]?([^=]+)=([^&]*)/g;
while (tokens = re.exec(qs)) {
params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
}
return params;
}
//var query = getQueryParams(document.location.search);
//alert(query.foo);
我使用图书馆。它允许您完全按照自己的要求执行:
var uri = 'www.test.com/t.html&a=1&b=3&c=m2-m3-m4-m5';
var c = uri.queryKey['c'];
// c = 'm2-m3-m4-m5'
我使用图书馆。它允许您完全按照自己的要求执行:
var uri = 'www.test.com/t.html&a=1&b=3&c=m2-m3-m4-m5';
var c = uri.queryKey['c'];
// c = 'm2-m3-m4-m5'
函数getURLParameters(paramName)
{
var sURL=window.document.URL.toString();
if(sURL.indexOf(“?”)大于0)
{
var arrParams=剩余分割(“?”);
var arrrurlparams=arrParams[1]。拆分(“&”);
var arrParamNames=新数组(arrrurlparms.length);
var arrParamValues=新数组(arrrurlparms.length);
var i=0;
对于(i=0;i
函数getURLParameters(paramName)
{
var sURL=window.document.URL.toString();
if(sURL.indexOf(“?”)大于0)
{
var arrParams=剩余分割(“?”);
var arrrurlparams=arrParams[1]。拆分(“&”);
var arrParamNames=新数组(arrrurlparms.length);
var arrParamValues=新数组(arrrurlparms.length);
var i=0;
对于(i=0;i我早就发现这一点,非常简单:
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
function(m,key,value) {
vars[key] = value;
});
return vars;
}
那么就这样称呼它:
var fType = getUrlVars()["type"];
document.write( tokens['id'] );
很久以前我就发现这很简单:
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
function(m,key,value) {
vars[key] = value;
});
return vars;
}
那么就这样称呼它:
var fType = getUrlVars()["type"];
document.write( tokens['id'] );
这是只检查一个参数的简单方法:
示例URL:
http://myserver/action?myParam=2
Javascript示例:
var myParam=location.search.split('myParam=')[1]
如果URL中存在“myParam”…变量myParam将包含“2”,否则它将未定义
在这种情况下,您可能需要一个默认值:
var myParam=location.search.split('myParam=')[1]?location.search.split('myParam=')[1]:'myDefaultValue';
更新:这样效果更好:
var url=”http://www.example.com/index.php?myParam=384&login=admin“;//或当前url的window.location.href
var captured=/myParam=([^&]+)/.exec(url)[1];//值位于[1]('384'在本例中)
var result=captured?captured:'myDefaultValue';
即使URL充满参数,它也能正常工作。这是一种只检查一个参数的简单方法:
示例URL:
http://myserver/action?myParam=2
Javascript示例:
var myParam=location.search.split('myParam=')[1]
如果URL中存在“myParam”…变量myParam将包含“2”,否则它将未定义
在这种情况下,您可能需要一个默认值:
var myParam=location.search.split('myParam=')[1]?location.search.split('myParam=')[1]:'myDefaultValue';
更新:这样效果更好:
var url=”http://www.example.com/index.php?myParam=384&login=admin“;//或当前url的window.location.href
var captured=/myParam=([^&]+)/.exec(url)[1];//值位于[1]('384'在本例中)
var result=captured?captured:'myDefaultValue';
即使URL充满了参数,它也能正常工作。这里有一个递归解决方案,它没有正则表达式,并且变异最小(只有params对象发生了变异,我相信这在JS中是不可避免的)
这太棒了,因为它:
var get_params = function(search_string) {
var parse = function(params, pairs) {
var pair = pairs[0];
var parts = pair.split('=');
var key = decodeURIComponent(parts[0]);
var value = decodeURIComponent(parts.slice(1).join('='));
// Handle multiple parameters of the same name
if (typeof params[key] === "undefined") {
params[key] = value;
} else {
params[key] = [].concat(params[key], value);
}
return pairs.length == 1 ? params : parse(params, pairs.slice(1))
}
// Get rid of leading ?
return search_string.length == 0 ? {} : parse({}, search_string.substr(1).split('&'));
}
var params = get_params(location.search);
// Finally, to get the param you want
params['c'];
<script type="text/javascript">
var first = getUrlVars()["year"];
var second = getUrlVars()["Month"];
alert(first);
alert(second);
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
</script>
paramVal = urlStr.replace(/.*param_name=([^&]*).*|(.*)/, '$1');
paramVal = document.URL.replace(/.*param_name=([^&]*).*|(.*)/, '$1');
- 是递归的
- 处理多个同名参数
- 可以很好地处理格式错误的参数字符串(缺少值等)
- 如果值中有“=”则不中断
- 执行URL解码
- 最后,这真是太棒了,因为它…啊
代码:
var get_params = function(search_string) {
var parse = function(params, pairs) {
var pair = pairs[0];
var parts = pair.split('=');
var key = decodeURIComponent(parts[0]);
var value = decodeURIComponent(parts.slice(1).join('='));
// Handle multiple parameters of the same name
if (typeof params[key] === "undefined") {
params[key] = value;
} else {
params[key] = [].concat(params[key], value);
}
return pairs.length == 1 ? params : parse(params, pairs.slice(1))
}
// Get rid of leading ?
return search_string.length == 0 ? {} : parse({}, search_string.substr(1).split('&'));
}
var params = get_params(location.search);
// Finally, to get the param you want
params['c'];
<script type="text/javascript">
var first = getUrlVars()["year"];
var second = getUrlVars()["Month"];
alert(first);
alert(second);
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
</script>
paramVal = urlStr.replace(/.*param_name=([^&]*).*|(.*)/, '$1');
paramVal = document.URL.replace(/.*param_name=([^&]*).*|(.*)/, '$1');
这是一个递归解决方案,它没有正则表达式,并且变异最小(只有params对象发生了变异,我相信这在JS中是不可避免的)
这太棒了,因为它:
var get_params = function(search_string) {
var parse = function(params, pairs) {
var pair = pairs[0];
var parts = pair.split('=');
var key = decodeURIComponent(parts[0]);
var value = decodeURIComponent(parts.slice(1).join('='));
// Handle multiple parameters of the same name
if (typeof params[key] === "undefined") {
params[key] = value;
} else {
params[key] = [].concat(params[key], value);
}
return pairs.length == 1 ? params : parse(params, pairs.slice(1))
}
// Get rid of leading ?
return search_string.length == 0 ? {} : parse({}, search_string.substr(1).split('&'));
}
var params = get_params(location.search);
// Finally, to get the param you want
params['c'];
<script type="text/javascript">
var first = getUrlVars()["year"];
var second = getUrlVars()["Month"];
alert(first);
alert(second);
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
</script>
paramVal = urlStr.replace(/.*param_name=([^&]*).*|(.*)/, '$1');
paramVal = document.URL.replace(/.*param_name=([^&]*).*|(.*)/, '$1');
- 是递归的
- 处理多个同名参数
- 可以很好地处理格式错误的参数字符串(缺少值等)
- 如果“=”在v中,则不会中断
const getUrlParams = url => `${url}?`.split('?')[1]
.split('&').reduce((params, pair) =>
((key, val) => key ? {...params, [key]: val} : params)
(...`${pair}=`.split('=').map(decodeURIComponent)), {});
console.log(getUrlParams('https://google.com/foo?a=1&b=2&c')); // Will log {a: '1', b: '2', c: ''}
console.log(getUrlParams('/foo?a=1&b=2&c')); // Will log {a: '1', b: '2', c: ''}
console.log(getUrlParams('?a=1&b=2&c')); // Will log {a: '1', b: '2', c: ''}
console.log(getUrlParams('https://google.com/')); // Will log {}
console.log(getUrlParams('a=1&b=2&c')); // Will log {}
const getUrlParams = (search: string) => `${search}?`
.split('?')[1]
.split('&')
.reduce(
(params: object, pair: string) => {
const [key, value] = `${pair}=`
.split('=')
.map(decodeURIComponent)
return key.length > 0 ? { ...params, [key]: value } : params
},
{}
)
interface IParams { [key: string]: string }
const paramReducer = (params: IParams, pair: string): IParams => {
const [key, value] = `${pair}=`.split('=').map(decodeURIComponent)
return key.length > 0 ? { ...params, [key]: value } : params
}
const getUrlParams = (search: string): IParams =>
`${search}?`.split('?')[1].split('&').reduce<IParams>(paramReducer, {})
http://TestServer/Pages/NewsArchive.aspx?year=2013&Month=July
<script type="text/javascript">
var first = getUrlVars()["year"];
var second = getUrlVars()["Month"];
alert(first);
alert(second);
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
</script>
function getParams(url){
var regex = /[?&]([^=#]+)=([^&#]*)/g,
params = {},
match;
while(match = regex.exec(url)) {
params[match[1]] = match[2];
}
return params;
}
let url = new URL('http://www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5');
let searchParams = new URLSearchParams(url.search);
console.log(searchParams.get('c')); // outputs "m2-m3-m4-m5"
function getVal(str) {
var v = window.location.search.match(new RegExp('(?:[\?\&]'+str+'=)([^&]+)'));
return v ? v[1] : null;
}
function getUrlQueryParams(url) {
var queryString = url.split("?")[1];
var keyValuePairs = queryString.split("&");
var keyValue = [];
var queryParams = {};
keyValuePairs.forEach(function(pair) {
keyValue = pair.split("=");
queryParams[keyValue[0]] = decodeURIComponent(keyValue[1]).replace(/\+/g, " ");
});
return queryParams;
}
// Query parameters with strings only, no special characters.
var currentParams = getUrlQueryParams("example.com/foo?number=zero");
alert(currentParams["number"]); // Gives "zero".
// For the URL you stated above...
var someParams = getUrlQueryParams("www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5 ");
alert(someParams["c"]); // Gives "m2-m3-m4-m5".
// For a query params with URI encoding...
var someParams = getUrlQueryParams("www.example.com/t.html?phrase=a%20long%20shot&location=Silicon+Valley%2C+USA");
alert(someParams["phrase"]); // Gives "a long shot".
alert(someParams["location"]); // Gives "Silicon Valley, USA".
// http:localhost:8080/path?param_1=a¶m_2=b
var getParamsMap = function () {
var params = window.location.search.split("&");
var paramsMap = {};
params.forEach(function (p) {
var v = p.split("=");
paramsMap[v[0]]=decodeURIComponent(v[1]);
});
return paramsMap;
};
// -----------------------
console.log(getParamsMap()["param_1"]); // should log "a"
function getParam(param){
return new URLSearchParams(window.location.search).get(param);
}
new URL(location.href).searchParams.get("my_key");
paramVal = urlStr.replace(/.*param_name=([^&]*).*|(.*)/, '$1');
paramVal = document.URL.replace(/.*param_name=([^&]*).*|(.*)/, '$1');