XMLHttpRequest, похоже, ничего не делает

Я безуспешно пытался загрузить двоичный файл с моего сервера с помощью jquery-ajax, от которого я наконец отказался. так что теперь я пытаюсь использовать вместо XMLHttpRequest. однако, я не могу даже заставить работать простой пример.

как ни странно, этот код, похоже, ничего не делает. я скопировал / вставил это из w3schools, и этот пример практически идентичен многим другим. это не работает для меня ни в Chrome, ни в FF:

 var xhttp = new XMLHttpRequest();
 xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
       // Action to be performed when the document is read;
    }
};
xhttp.open("GET", '/blah/blah/output.png', true);
xhttp.send();

мы входим в функцию onreadystatechange только один раз, в операторе open() с xhttp.readyState, равным единице, но не на шаге send(). я должен думать, что это, по крайней мере, вызовет какую-то ошибку, а не сделает ничего вообще.

Кроме того, в качестве эксперимента я намеренно выдал open() неверный URL - но опять же не получил ответа.

Кто-нибудь может сказать мне, что я могу делать неправильно?

большое спасибо вам.

1 ответ

Решение

Ваш код выглядит правильно для меня, что указывает на какую-то внешнюю причину.

Ваш код проходит до конца контекста выполнения? Браузеры будут удерживать сетевые запросы, пока движок не вернется к браузеру.

Например:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
   // Action to be performed when the document is read;
  }
};
xhttp.open("GET", '/blah/blah/output.png', true);
xhttp.send();

while(true){}

никогда не отправит звонок.

Другие вопросы по тегам