Получение текста или json с сервера с собственным javascript не может работать правильно - PullRequest
0 голосов
/ 26 марта 2020

Мне нужно получить области и города от 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) => {... , поэтому я не могу манипулировать ответом сервера. Вот консоль из браузера:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...