Có vẻ như các cuộc gọi lại thành công, lỗi và hoàn thành chỉ kích hoạt khi yêu cầu ajax có thể nhận được một số phản hồi từ máy chủ.Kiểm tra trạng thái yêu cầu ajax của jQuery
Vì vậy, nếu tôi tắt máy chủ, lỗi gọi lại sau sẽ không được thực hiện và yêu cầu không âm thầm.
$.ajax({
type: "GET",
url: "http://localhost:3000/",
dataType: "script",
success: function() {
alert("success");
},
error: function() {
alert("error");
}
});
Cách tốt nhất để ném lỗi khi máy chủ không thể truy cập được.
Chỉnh sửa - Từ những gì tôi đã thử và đọc nó xuất hiện rằng việc xây dựng lỗi xử lý lỗi của jQuery không hoạt động với JSONP hoặc dataType: "script". Vì vậy, tôi sẽ cố gắng đặt thời gian chờ thủ công.
Chỉnh sửa - Đã nghiên cứu thêm một chút và có vẻ như không chỉ lời gọi lỗi ajax không hoạt động, nhưng bạn không thể hủy yêu cầu ajax với tập lệnh dataType hoặc jsonp và những yêu cầu đó bỏ qua cài đặt thời gian chờ.
Có một giải pháp thay thế - plugin jquery-jsonp, nhưng nó sử dụng iframe ẩn mà tôi muốn tránh. Vì vậy, tôi đã giải quyết khi tạo thời gian chờ thủ công như được đề xuất bên dưới. Bạn không thể hủy bỏ yêu cầu nếu nó hết thời gian, có nghĩa là tập lệnh vẫn có thể tải ngay cả sau khi hết thời gian chờ, nhưng ít nhất một thứ sẽ kích hoạt nếu máy chủ không khả dụng.
jQuery ajax có lỗi xử lý được xây dựng trong (xem câu trả lời của tôi dưới đây), bạn có thể sử dụng ajaxsetup để áp dụng các tùy chọn này. – Sphvn