Tôi có một số mã Javascript JQuery thực hiện cuộc gọi Ajax đến máy chủ cứ sau 5 phút, nó để giữ cho phiên máy chủ hoạt động và giữ cho người dùng đăng nhập. Tôi đang sử dụng $.ajax()
phương thức trong JQuery. Chức năng này dường như có thuộc tính 'lỗi' mà tôi đang cố gắng sử dụng trong trường hợp kết nối internet của người dùng gặp sự cố để tập lệnh KeepAlive tiếp tục chạy. Tôi đang sử dụng mã sau:
var keepAliveTimeout = 1000 * 10;
function keepSessionAlive()
{
$.ajax(
{
type: 'GET',
url: 'http://www.mywebapp.com/keepAlive',
success: function(data)
{
alert('Success');
setTimeout(function()
{
keepSessionAlive();
}, keepAliveTimeout);
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
alert('Failure');
setTimeout(function()
{
keepSessionAlive();
}, keepAliveTimeout);
}
});
}
Khi tôi chạy nó, tôi sẽ nhận được thông báo 'Thành công' bật lên trên màn hình trong một hộp cảnh báo sau mỗi 10 giây. Tuy nhiên, ngay sau khi tôi rút cáp mạng, tôi không nhận được gì, tôi đã mong đợi hàm báo lỗi được gọi và nhìn thấy hộp cảnh báo 'Failure', nhưng không có gì xảy ra.
Tôi có đúng khi giả định rằng chức năng 'lỗi' chỉ dành cho mã trạng thái không phải '200' được trả về từ máy chủ không? Có cách nào để phát hiện sự cố kết nối mạng khi thực hiện cuộc gọi Ajax không?