Nikulio
@Nikulio
NaN !== NaN

Есть ли ошибка в этом аякс запросе?

// Выполняет запрос HTTP GET содержимого указанного URL-адреса.
    // После успешного получения ответа проверяет, содержит ли он простой текст,
    // и передает его указанной функции обратного вызова
    function getText(url, callback) {
var request = new XMLHttpRequest();
request.open("GET", url);
request.onreadystatechange = function() {
// Создать новый запрос
// Указать URL-адрес ресурса
// Определить обработчик события
            // Если запрос был выполнен успешно
            if (request.readyState === 4 && request.status === 200) {
                var type = request.getResponseHeader("Content-Type");
                if (type.match(/^text/))            // Убедиться, что это текст
                    callback(request.responseText); // Передать функции
} };
        request.send(null);                         // Отправить запрос
    }


Код из книги Флэнэгана

Отправка запроса на сервер происходит в самом конце функции. Почему так? логичнее же было бы её поставить перед проверкой на ответ сервера?Мли нет?

Спасибо
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Сначала устанавливаются обработчики (наблюдатели/слушатели/коллбеки) на определенные события. Затем запускается код, вызывающий их.

То есть, вот этот фрагмент кода - установка обработчика, который будет вызван при определенном условии:

request.onreadystatechange = function() { .. }

В этой ситуации условие звучит как "Изменение состояния запроса".

https://learn.javascript.ru/ajax-xmlhttprequest#%D...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rou1997
@Rou1997
Это асинхронный вариант, с обработчиком события, сам запрос будет выполняться в отдельном потоке (параллельно остальному коду) и потом из этого потока зажгет ("выполнит") событие onreadystatechange. которое, разумеется, надежнее инициализировать до начала отправки запроса, изучайте события, они в JavaScript везде.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы