拉取包含哈希标记的完整URL参数

时间:2014-10-19 23:06:54

标签: javascript jquery url-parameters

我有一个看起来像这样的网址:

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参数并将名称插入页面上的几个字段。这就是为什么我需要读取完整参数,包括哈希标记,以便在页面上正确显示。

2 个答案:

答案 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);

小提琴http://jsfiddle.net/xvgs6r38/3/

答案 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')));