Tôi đang tìm kiếm trên web nhưng tài liệu khó có thể thực hiện được. Chúng ta đều biết các cuộc gọi AJAX cơ bản sử dụng trình duyệt được xây dựng-in XMLHttpRequest
đối tượng (giả định một trình duyệt hiện đại ở đây):Làm thế nào để phát hiện thời gian chờ trên một cuộc gọi AJAX (XmlHttpRequest) trong trình duyệt?
var xmlHttp = new XMLHttpRequest(); // Assumes native object
xmlHttp.open("GET", "http://www.example.com", false);
xmlHttp.send("");
var statusCode = xmlHttp.status;
// Process it, and I'd love to know if the request timed out
Vì vậy, có cách nào mà tôi có thể phát hiện rằng cuộc gọi AJAX timed out bằng cách kiểm tra các XMLHttpRequest đối tượng trong trình duyệt? Tôi có nên được khuyên nên làm điều gì đó như window.setTimeout(function() { xmlHttp.abort() }, 30000);
?
Cảm ơn!
-Mike
Năm 2014, câu trả lời này phải được gắn thẻ chính xác. Ngày nay, hầu hết mọi trình duyệt đều hỗ trợ tính năng này (kể cả IE8 trở đi). –
Vâng, không hoàn toàn - được cảnh báo rằng sự kiện ontimeout không bị sa thải cho đến khi SAU readyState == 4 được kích hoạt. Điều này không chỉ không trực quan, mà còn gây khó khăn cho việc tạo hành vi có điều kiện dựa trên việc tải lên có thành công hay không do thực tế là đã hết thời gian chờ. Ví dụ: tùy chỉnh cảnh báo người dùng vì lý do tải lên không thành công. Trong tình huống của tôi, tôi thấy rằng tôi chỉ có thể đạt được những gì tôi muốn với setTimeout. Ngoài ra, xhr.timeout dường như không hoạt động trên Safari kể từ năm 2016. – Allasso