Netbean 6.9.1
GlassFish 3.0.1
jQuery 1.6.2
Я тестирую свое веб-приложение на время ожидания.
Мое понимание термина "тайм-аут" заключается в том, что при отправке Ajax-запроса и если это занимает определенное количество времени (например, 30 секунд), запускается функция обратного вызова тайм-аута.
Я тоже прочитал JQuery Timeout:
timeoutNumber
Установить время ожидания (в миллисекундах) для запроса. Это переопределит любое глобальное время ожидания, установленное с помощью $ .ajaxSetup (). Период ожидания начинается с момента выполнения вызова $ .ajax; если выполняется несколько других запросов, и в браузере нет доступных подключений, запрос может истечь до истечения времени ожидания. В jQuery 1.4.x и ниже объект XMLHttpRequest будет в недопустимом состоянии, если время ожидания истекло; доступ к любым членам объекта может вызвать исключение. Только в Firefox 3.0+ запросы на скрипты и JSONP не могут быть отменены тайм-аутом; скрипт будет работать, даже если он прибудет после периода ожидания.
Но пока я тестирую тайм-аут, вызывается функция ошибки, и txtStat показывает «ошибку», когда она должна быть «тайм-аут». Вот мой тестовый шаг:
Шаг теста:
- Запустить сервер Glassfish
- Перейти на тестовую страницу (foo.jsp)
- Стоп сервер Glassfish
- нажмите на кнопку на foo.jsp, чтобы отправить запрос ajax.
Ожидаемый результат:
Запрос Ajax отправляется, но не удается связаться с сервером, вызывается функция обратного вызова с ошибкой и ее аргумент: txtStat должен иметь значение «timeout».
Фактический результат:
Вызывается функция обратного вызова error и ее аргумент: txtStat имеет значение "error"
Так это ожидаемое поведение или мое понимание таймаута неверно?
Мой код Ajax:
$.ajax({
url: "../resources/plan/list/some",
type: "get",
dataType: "json",
timeout: 30000,
success: function(data, txtStat, xhr) {
console.log("success")
},
error: function(xhr, txtStat, errThrown) {
if(txtStat === "timeout") {
console.log("timeout");
}
else { //txtStat === "error", "abort", "parseerror"
console.log(txtStat);
}
},
complete: function(xhr, txtStat) {
console.log("completed");
}
});