#javascript #xml #xmlhttprequest
Вопрос:
Данные, которые я хочу получить, получены из API, который возвращает только формат XML. При использовании IE запрос отправляется, и я получаю ответ бека, и все в порядке. Но когда я пытаюсь использовать Chrome, тот же запрос находится в ожидании.
Также я попробовал тот же код, чтобы вызвать какой-нибудь открытый API в Интернете для тестирования, который возвращает .JSON, и тот же код работает в Chrome. Так что же я делаю не так ?
var req = null;
req = new XMLHttpRequest();
req.onreadystatechange = function() {
if (req.readyState == 4 amp;amp; req.status == 200) {
alert("Hi")
}
};
req.open("GET", "LINK" ,false);
req.send(null);
Комментарии:
1. «…тот же запрос находится на рассмотрении…» Что вы имеете в виду под этим? Что конкретно вы видите?
2. Примечание:
false
в качестве третьего параметра кopen
-плохая идея, и, скорее всего, в какой-то момент ее перестанут уважать. Он создает синхронный запрос, который блокирует пользовательский интерфейс страницы (в лучшем случае) или браузера (в худшем случае) до завершения сетевой операции. Это никогда не бывает хорошей идеей. Вместо этого оставьте его выключенным, чтобы использовать значение по умолчаниюtrue
для асинхронного запроса.3. Я только что попробовал приведенный выше код в Chrome, и он работал просто отлично.
4. В качестве примечания я всегда поражаюсь тому, сколько людей все еще используют синтаксис старой школы
new XMLHttpRequest()
и всю сопутствующую литературу (onreadystatechange
,req.readyState
,req.open("GET")
иreq.send
т. Д.) Вместо fetch . Мы видим, что вопросы используютсяXMLHttpRequest()
в течение всего дня5. Для асинхронного запроса используйте true вместо false. Кроме того, попробуйте
((req.status >= 200 amp;amp; req.status < 300) || req.status == 304)