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
?
答案 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的一部分。完全安全使用。