Ниже функция, с помощью которой вы можете работать с клиента (из браузера) с API сервиса kladr-api.ru
Принимает она 1 аргумент - или строку, или объект параметров; возвращает экземпляр промиса (Promise).
Про промисы можно почитать тут:
https://learn.javascript.ru/promise.
function request(params){
var node=document.createElement('script'),src='//kladr-api.ru/api.php?',
res,rej,
result=new Promise(function(resolve,reject){
res=resolve;
rej=reject;
});
node.type='text/javascript';
node.id=(new Date()).getTime()+Math.random();
node.onerror=function(){
node.parentNode.removeChild(node);
rej();
};
node.onload=function(){
node.parentNode.removeChild(node);
};
if(typeof params=='string')
src+=['?','&'].indexOf(params.substr(0,1))>-1?params.substr(1):params;
else if(typeof params=='object')
src+=Object.keys(params).map(function(key){
return key+'='+encodeURIComponent(params[key]);
}).join('&');
var callback='__jsonp_dynamic_callback_'+node.id.toString().replace('.','');
window[callback]=function(json){
res(json);
delete window[callback];
};
node.src=src+(!params?'':'&')+'callback='+callback;
document.body.appendChild(node);
return result;
};
request('?query=Арх&contentType=city&withParent=1&limit=3').then(function(json){
console.log(json);
});
Upd. Еще так можно использовать:
request({
query:'Арх',
contentType:'city',
withParent:1,
limit:3
}).then(function(json){
console.log(json);
});