XMLHttpRequest в ожидании в Chrome, но в IE все в порядке

#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)