Tôi có một vấn đề nhỏ khi hiểu các trình xử lý của XMLHttpRequest
. The specification says this about the onerror
handler:Khi nào cần xử lý sự cố onbound của XMLHttpRequest lửa
error
[Đã gửi ...] Khi yêu cầu không thành công.
load
[Đã gửi đi ...] Khi yêu cầu đã hoàn tất thành công.
Vấn đề là, "yêu cầu không thành công" có nghĩa là gì. Đó có thể là
- yêu cầu không thể được ban hành ở tất cả (ví dụ. Kết nối từ chối và các lỗi như vậy), hoặc
- ở trên cộng với máy chủ trả lại một mã lỗi (ví dụ. 404)
Ngoài ra, tôi muốn biết liệu điều đó có nghĩa là onerror
và onload
sẽ không bao giờ được kích hoạt cùng một lúc hay không.
This reference chỉ xử lý onerror
nên được thực hiện tùy thuộc vào status
mã và onload
tùy thuộc vào readyState
. Điều đó cho thấy họ không loại trừ lẫn nhau, tuy nhiên, tôi không nghĩ đây là thông tin có thẩm quyền.
Tôi hỏi vì sử dụng ảnh chụp nhanh Opera mới nhất, tôi thấy onload
được kích hoạt ngay cả trên mã trạng thái 404. Tôi biết thử nghiệm status
là một sự chắc chắn đặt cược, nhưng tôi muốn biết cho dù đó là một cái gì đó tôi phải làm cho mỗi đặc điểm kỹ thuật hoặc chỉ là một workaround cho một lỗi trong Opera.
Tôi lấy 'đã hoàn tất thành công' có nghĩa là bạn nhận được mã trạng thái, cho dù đó là 200 OK hoặc mã lỗi như 404. Chrome cũng kích hoạt ngay cả khi mã trạng thái là mã trạng thái lỗi. – Snuffleupagus
onerror và onload không bao giờ kích hoạt cùng một lúc. Nó là cái này hay cái kia. Tuy nhiên onloadend cháy trong cả hai trường hợp và là sự kiện cuối cùng trong hàng. – jayarjo