jquery - 从参数构建漂亮的url

时间:2011-04-27 20:10:34

标签: jquery url uri clean-urls

jQuery有一个param()函数,我正在寻找类似的功能。我需要在我的对象中返回一个url。例如:

url: function() {
  return this.baseUrl + '?' + $.param({page: this.page, perPage: this.perPage});
},

这将返回example.com/?page=1&perPage=5或类似内容的网址。如何形成网址example.com/page/1/perpage/5

3 个答案:

答案 0 :(得分:2)

您可以创建自己的功能:

function build(base, params) {
    for(var k in params) {
        if(params.hasOwnProperty(k)) {
            base += '/' + k + '/' + params[k];
        }
    }
    return base;
}

唯一的问题是参数的顺序无法保证(这对查询字符串来说不是问题,但可能适用于这种URL)。如果base已经以斜杠结尾,您可能还想添加一个检查。

答案 1 :(得分:1)

只是一个想法:)

'example.com/?page=1&perPage=5'.replace(/[&=]/g,'/').replace('?','')
 .toLowerCase();

答案 2 :(得分:0)

最后解决这个问题:

replace(/[&=]/g,'/').replace('?','')
像这样:

url: function() {
  return (this.baseUrl + '?' + $.param({page: this.page, perPage: this.perPage})).replace(/[&=]/g,'/').replace('?','');
},

编辑指出Felix Kling对?的关注: 这只会删除FIRST吗?留下任何其他?是查询字符串INTACT的一部分。完全安全使用。