我有一个带有一些GET参数的URL,如下所示:
www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5 我需要得到c的整个值。我试图读取网址,但我得到的只是m2。如何使用JavaScript完成此操作?
发布于 2009-07-08 18:04:19
我见过的大多数实现都没有对名称和值进行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);发布于 2009-06-11 08:38:06
function gup( name, url ) {
if (!url) url = location.href;
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( url );
return results == null ? null : results[1];
}
gup('q', 'hxxp://example.com/?q=abc')发布于 2016-02-19 01:52:48
浏览器供应商已经通过URL和URLSearchParams实现了一种原生方法。
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"目前支持Firefox、Opera、Safari、Chrome和Edge。有关浏览器支持see here的列表。
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams https://developer.mozilla.org/en-US/docs/Web/API/URL/URL
谷歌的工程师Eric Bidelman将这个polyfill用于不支持的浏览器。
https://stackoverflow.com/questions/979975
复制相似问题