Мне нужно получить области и города от batuta.medunes. net. Программа работает правильно для регионов, но для городов не может работать правильно, даже если я использую ту же функцию, а ответ от сервера такой же, как в первом случае с регионами.
Вот код с функциями, которые я использую на onchange событие в выберите тег в html:
var regions;
var get="";
function addRegion() {
var e = document.getElementById("countries");
console.log(e.selectedIndex);
console.log(countries[e.selectedIndex].alpha2Code);
var url="http://battuta.medunes.net/api/region/"+countries[e.selectedIndex].alpha2Code+"/all/?key=4b64da74d07ae8718ec91742d9a73b0a&callback=cb"
get="reg"
JsonpHttpRequest(url, "cb")
}
function addCity() {
var countr = document.getElementById("countries");
var regs = document.getElementById("regions");
var regStr=regions[regs.selectedIndex].region;
regStr = regStr.replace(/\s/g, '%20');
console.log(regStr);
var url="http://battuta.medunes.net/api/city/"+countries[countr.selectedIndex].alpha2Code+"/search/?region="+regStr+"&key=4b64da74d07ae8718ec91742d9a73b0a"
console.log(url);
get="city";
JsonpHttpRequest(url, "cb");
}
function JsonpHttpRequest(url, callback) {
var e = document.createElement('script');
e.src = url;
document.body.appendChild(e);
window[callback] = (data) => {
if(get=="reg"){
regions=data;
console.log(data);
select = document.getElementById('regions');
removeOptions(select);
for (var i = 0; i<Object.keys(data).length; i++){
var opt = document.createElement('option');
console.log(data[i].region);
opt.innerHTML = data[i].region;
select.appendChild(opt);
}
}
else{
console.log(data);
select = document.getElementById('cities');
removeOptions(select);
for (var i = 0; i<Object.keys(data).length; i++){
var opt = document.createElement('option');
console.log(data[i].city);
opt.innerHTML = data[i].city;
select.appendChild(opt);
}
}
}
}
function removeOptions(selectElement) {
var i, L = selectElement.options.length - 1;
for(i = L; i >= 0; i--) {
selectElement.remove(i);
}
}
Я использовал console.log (), и когда я меняю регион, проблема заключается в остановке выполнения функции JsonpHttpRequest ( url, callback) в строке до ... window [callback] = (data) => {... , поэтому я не могу манипулировать ответом сервера. Вот консоль из браузера: