Вообщем у меня есть функция, очень простая срабатывает клик эта функция обращается на сервер возвращает данные и распихивает по нужным местам, а теперь проблема я вижу что есть данные они отображаются в нужных инпутах, однако в консоли и в popup, они не показывается там просто пустота хотя данные есть, я честно уже всё перепробовал, но так и не смог вытащить данные в popup, а это очень надо. Вот код:
measoftMap.choicePvz = function (placemark) {
// Выделяем выбранный ПВЗ в списке
document.getElementById('pvz_list').options[placemark.number].selected = true;
let xml = '<?xml version="1.0" encoding="UTF-8"?><pvzlist><auth extra="'+settings.client_id+'"></auth><code>'+placemark.code+'</code></pvzlist>';
let list_code = placemark.code;
let list_comment = '';
let list_address = '';
let list_phone = '';
let list_worktime = '';
if (placemark.address == '') {
ajax(api_url, {
data: xml,
success: function (response) {
if (window.DOMParser) {
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(response, "text/xml");
} else {
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(response);
}
let pvz_list = xmlDoc.getElementsByTagName('pvz');
if (pvz_list.length > 0) {
list_address = pvz_list[0].getElementsByTagName('address')[0].innerHTML;
list_phone = pvz_list[0].getElementsByTagName('phone')[0].innerHTML;
list_worktime = pvz_list[0].getElementsByTagName('worktime')[0].innerHTML;
list_comment = pvz_list[0].getElementsByTagName('comment')[0].innerHTML;
measoftMap.savePvzData(list_code, list_address, list_phone, list_worktime);
} else {
list_comment = 'Не удалось получить информацию о выбранном объекте.';
}
},
error: function(jqxhr, status, errorMsg) {
console.log(status + ": " + errorMsg);
}
});
}
console.log(list_address);
console.log(list_phone);
console.log(list_worktime);
console.log(list_comment);
let popup = L.popup().setLatLng(placemark.lat_lng).setContent('Адрес: ' + list_address + '<br>Телефон: '
+ list_phone + '<br>Часы работы: ' + list_worktime + '<hr>' + list_comment);
popup.openOn(map);
};
measoftMap.savePvzData = function (code, address, phone, worktime) {
// Записываем код и адрес выбранного ПВЗ
document.getElementById('pvz_code').value = code;
document.getElementById('pvz_address').value = address;
document.getElementById('pvz_phone').value = phone;
document.getElementById('pvz_worktime').value = worktime;
};
Прочтите более внимательно что такое Promise
и как он работает!. Вы используете вывод данных в консоль не дожидаясь завершение выполнения ajax
запроса. После выполнения ajax
(когда данные пришли) вызывается метод success()
в котором Вы выводите данные в инпуты. Для решения проблемы перенесите добавление данных в popup в метод success
так:
document.getElementById('pvz_list').options[placemark.number].selected = true;
let xml = '<?xml version="1.0" encoding="UTF-8"?><pvzlist><auth extra="'+settings.client_id+'"></auth><code>'+placemark.code+'</code></pvzlist>';
let list_code = placemark.code;
let list_comment = '';
let list_address = '';
let list_phone = '';
let list_worktime = '';
if (placemark.address == '') {
ajax(api_url, {
data: xml,
success: function (response) {
if (window.DOMParser) {
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(response, "text/xml");
} else {
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(response);
}
let pvz_list = xmlDoc.getElementsByTagName('pvz');
if (pvz_list.length > 0) {
list_address = pvz_list[0].getElementsByTagName('address')[0].innerHTML;
list_phone = pvz_list[0].getElementsByTagName('phone')[0].innerHTML;
list_worktime = pvz_list[0].getElementsByTagName('worktime')[0].innerHTML;
list_comment = pvz_list[0].getElementsByTagName('comment')[0].innerHTML;
measoftMap.savePvzData(list_code, list_address, list_phone, list_worktime);
} else {
list_comment = 'Не удалось получить информацию о выбранном объекте.';
}
console.log(list_address);
console.log(list_phone);
console.log(list_worktime);
console.log(list_comment);
let popup = L.popup().setLatLng(placemark.lat_lng).setContent('Адрес: ' + list_address + '<br>Телефон: '
+ list_phone + '<br>Часы работы: ' + list_worktime + '<hr>' + list_comment);
popup.openOn(map);
},
error: function(jqxhr, status, errorMsg) {
console.log(status + ": " + errorMsg);
}
});
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
Изучаю REST APIНе понимаю отличия метода PUT от PATCH: они же оба используются для обновления данных
Получаю с помощью AJAX запроса русский текст с сервераПытаюсь вывести
У меня динамически можно создавать группы, у каждой группы своя цена