我有一个看起来像这样的网址:
example.com/puppy-reservation?puppy=Bitzy's Female #1
我需要阅读整个网址参数。我尝试使用以下脚本:
$.urlParam = function(name){
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (results==null){
return null;
}
else{
return results[1] || 0;
}
}
console.log(decodeURIComponent($.urlParam('puppy')));
当它运行时,它会给我Bitzy's Female
。
如何修改脚本以读取整个URL参数? IE:Bitzy's Female #1
进一步解释。我的CMS正在输出数据库条目的名称。在这种情况下,它是Bitzy's Female #1
。这是它输入CMS的方式。在页面上,用户可以点击您在上面看到的网址:example.com/puppy-reservation?puppy=Bitzy's Female #1
当页面加载时,我读取URL参数并将名称插入页面上的几个字段。这就是为什么我需要读取完整参数,包括哈希标记,以便在页面上正确显示。
答案 0 :(得分:0)
这对你有用吗?
var url = window.location.href;
url = encodeURIComponent(url).split(encodeURIComponent('?'))[1];
var obj = {};
if (url) {
url = url.split(encodeURIComponent('&'));
for (var i = 0; i < url.length; i++) {
var param = url[i].split(encodeURIComponent('='));
obj[decodeURIComponent(param[0])] = decodeURIComponent(param[1]);
}
}
console.log(obj);
答案 1 :(得分:0)
这个答案的功劳归功于@ hjpotter92。我在这里发帖,因为他在评论中留下了它。
在我的代码中,我有以下一行:
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
如果我将=([^&#]*)')
更改为=(.+?(?:&|$))')
则有效。
完整代码:
$.urlParam = function(name){
var results = new RegExp('[\?&]' + name + '=(.+?(?:&|$))').exec(window.location.href);
if (results==null){
return null;
}
else{
return results[1] || 0;
}
}
console.log(decodeURIComponent($.urlParam('puppy')));