要从 URL 中获取后面的参数并将其转换为对象,可以使用以下方法:
function getUrlParams() {
var params = {};
var queryString = window.location.search.substr(1); // 获取URL中问号后面的查询字符串部分
if (queryString) {
var paramPairs = queryString.split('&'); // 将查询字符串拆分为键值对数组
for (var i = 0; i < paramPairs.length; i++) {
var pair = paramPairs[i].split('='); // 将键值对拆分为键和值
// 解码键和值,并存储到params对象中
var key = decodeURIComponent(pair[0]);
var value = decodeURIComponent(pair[1] || '');
// 如果params中已存在相同的key,则将值追加到数组中
if (params.hasOwnProperty(key)) {
if (!Array.isArray(params[key])) {
params[key] = [params[key]];
}
params[key].push(value);
} else {
params[key] = value;
}
}
}
return params;
}
// 示例使用:
var urlParams = getUrlParams();
console.log(urlParams);
上述代码中,getUrlParams()
函数首先获取 URL 中问号后面的查询字符串部分(即 window.location.search
),然后将其拆分为键值对数组。接下来,通过遍历每个键值对,并使用 decodeURIComponent()
解码键和值,将其保存到一个名为 params
的对象中。
在处理键值对时,如果存在相同的键,它会将值追加到一个数组中,以便能够存储多个相同键的不同值。
最后,将获取到的 params
对象返回,以便在其他地方使用。通过调用 getUrlParams()
函数,可以获取 URL 后面的参数并转换为一个包含所有参数的对象。
例如,对于以下 URL:http://example.com?name=John&age=25&city=New%20York
,getUrlParams()
将返回以下对象:
{
name: "John",
age: "25",
city: "New York"
}
如果存在多个具有相同键的参数,例如 http://example.com?name=John&name=Smith
,则将返回以下对象:
{
name: ["John", "Smith"]
}