Столкнулся с проблемой при вызове веб-сервиса через JavaScript. Ответ приходит пустым, хотя при обращении к сервису через браузер получаю валидный XML-документ.
Вот мой JavaScript-код:
function запроситьДанные() {
let запрос;
if (window.XMLHttpRequest) {
запрос = new XMLHttpRequest();
} else if (window.ActiveXObject) {
запрос = new ActiveXObject('Microsoft.XMLHTTP');
}
let адрес = 'http://примерсервиса.com/api/данные?параметр=значение';
запрос.open('GET', адрес, true);
запрос.onreadystatechange = обработатьОтвет;
запрос.send();
}
function обработатьОтвет() {
if (запрос.readyState == 4) {
console.log('Статус:', запрос.status);
console.log('XML:', запрос.responseXML);
console.log('Текст:', запрос.responseText);
}
}
В консоли вижу:
readyState: 4
status: 0
responseXML: null
responseText: пусто
Код выполнял в Firefox и IE на разных компьютерах - везде та же проблема. Что может быть не так? Может, дело в настройках сервера?
у меня была похожая проблема недавно. оказалось, что дело было в неправильном contentType. попробуй добавить в запрос заголовок ‘Content-Type’: ‘application/xml’. еще советую проверить, не блокирует ли антивирус запросы - у меня как-то kaspersky мешал. если ничего не поможет, можно попробовать использовать axios вместо XMLHttpRequest, он удобнее и часто решает такие проблемы автоматически. удачи с отладкой!
Похоже на проблему с CORS. Сервер скорее всего не разрешает кросс-доменные запросы с вашего сайта. Попробуйте добавить заголовок ‘Access-Control-Allow-Origin’ на сервере или использовать прокси на вашем домене. Также проверьте протокол - если ваш сайт на HTTPS, а сервис на HTTP, браузер может блокировать запрос. Еще вариант - использовать JSONP если сервис его поддерживает. В крайнем случае можно сделать запрос на бэкенде и передать данные на фронт.