Хорошо, я объясню это немного подробнее.
После того, как вы выполните запрос readyState проходит 5 этапов:
- 0) Неинициализированный
- 1) Соединение открыто
- 2) Запрос отправлен
- 3) Получение ответа
- 4) Передача данных завершена
После завершения передачи данныхсвойство status изменяется в соответствии с кодом ответа сервера.Обычно для успешной передачи используется код 200. Если происходит внутренняя ошибка сервера, этот код изменится, но вы все равно будете получать данные или, по крайней мере, то, что может быть отправлено.
Итак, чтобы предотвратить ваше предупреждение от выстрела несколько раз вам нужно проверить состояние, а затем код ответа:
if (httpReq.readyState == 4) { // data is received, now we play with it
if (httpReq.status == 200) {
// process data
alert('Data received!');
} else {
// handle server-side error
}
}