带有斜杠分隔参数的Ajax请求

时间:2016-08-23 11:36:43

标签: javascript jquery ajax rest

我必须处理跟随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对象中的参数

3 个答案:

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