我必须处理跟随URL中的斜杠分隔参数的API,如此
http://example.com/api/get_nearest_places/:en_type_id/:longtude/:latitude
我知道我可以将URL构建为字符串,如下所示
var longtude = 33.42432;
var latitude = 42.3243;
var en_type_id = 1;
var url = "http://example.com/api/get_nearest_places/"+en_type_id+"/"+longtude+"/"+latitude;
然后传递这个URL Ajax函数,但这是一种难看的管理方式,特别是如果有很多请求,所以这种方式并不实用
我想知道这是一个JavaScript函数或库,它带有一个带有URL和URL参数的JOSN对象,并且参数匹配然后返回URL,或者以更漂亮的方式获取基本URL参数,函数名称和JSON对象中的参数
答案 0 :(得分:3)
function getURLWithParam(url, param)
{
$.each(params, function(index, value){
url = url.replace(":" + index, value);
});
return url;
}
用法:
getURLWithParam("http://example.com/api/get_nearest_places/:en_type_id/:longtude/:latitude",
{
en_type_id: 1,
latitude: 42.3243,
longtude: 33.42432
});
答案 1 :(得分:2)
您可以创建一个简单的方法,如
function createUrl(url, obj) {
for (x in obj) {
url = url.replace(':' + x, obj[x]);
}
return url;
}
var url = createUrl("http://example.com/api/get_nearest_places/:en_type_id/:longtude/:latitude", {
longtude: 33.42432,
latitude: 42.3243,
en_type_id: 1
});
console.log(url)

答案 2 :(得分:1)
游戏时间不多,但如果你想循环拥有值的对象,我会使用Object.keys。
e.g: xPosOfLable.constant = x
或者你可以从正则表达式转到对象。如果你的对象可能有更多的键,那么这就好了。没有浪费时间循环无效键。
function urlReplace(url, params) {
Object.keys(params).forEach(function(key) {
//url = url.replace(new RegExp(":" + key), params[key]);
url = url.replace(":" + key, params[key]);
});
return url;
}
var url = urlReplace("http://example.com/api/get_nearest_places/:en_type_id/:longtude/:latitude", {
longtude: 33.42432,
latitude: 42.3243,
en_type_id: 1
});
console.log(url);