2011-09-28 6 views
5

Vì vậy, cuối cùng tôi đã cố gắng để thử AJAX lần nữa (chứ không phải là iframe ẩn), và bây giờ tôi nhớ lý do tại sao tôi ghét AJAX rất nhiều ở nơi đầu tiên.AJAX trả về mã trạng thái bất thường

Đó là một tập lệnh đơn giản truy vấn máy chủ cho số lượng tin nhắn cá nhân mà người dùng đã nhận được. Máy chủ phản hồi với một số duy nhất và tập lệnh cập nhật chỉ báo và đặt thời gian chờ trong năm giây để truy vấn lại.

Nhân dịp hiếm hoi (thường là khi tôi đi AFK một lúc), tôi bắt đầu nhận được các mã trạng thái HTTP kỳ quái nhất.

Mở Chrome: "Yêu cầu AJAX thất bại trong việc lấy /ajax/network.php, trạng thái HTTP 0"
Mở IE: "Yêu cầu AJAX thất bại trong việc lấy /ajax/network.php, trạng thái HTTP 12.029"

Cả hai mã này đều không hợp lệ. Điều gì đang xảy ra ở đây, và làm thế nào tôi có thể ngăn nó xảy ra?

+0

Các lỗi này có lặp lại được không hoặc chúng có hoàn toàn ngẫu nhiên không? – Alex

Trả lời

6

Đó là khía cạnh gây phiền nhiễu của AJAX. Tôi thấy tốt nhất là chỉ cần xử lý tất cả các trạng thái không phải 200 là lỗi. Thực sự, bạn sẽ không hiển thị cho người dùng của mình bất kỳ thông báo lỗi cụ thể nào liên quan đến kết quả thực tế ("Đã xảy ra sự cố"), vì vậy tôi không lo lắng quá mức về các điều kiện lỗi không nhất quán.

jQuery bình thường hóa một số hành vi AJAX, vì vậy bạn cũng có thể muốn xem xét việc sử dụng hành vi đó.

Nhân tiện, lỗi 0 trong Chrome và 12029 trong IE cho biết sự cố kết nối; vì điều đó không liên quan gì đến HTTP, đó là lý do tại sao mã không hợp lệ được hiển thị.

+0

OK, tôi đã thêm một tham số vào hàm AJAX của tôi 'im lặng', ngăn chặn thông báo lỗi. Thông báo lỗi hữu ích đối với hành động do người dùng thực hiện nhưng trên điều tự động cập nhật này, chúng gây phiền toái. Cảm ơn câu trả lời, sẽ chấp nhận khi giới hạn thời gian cho phép. –

+3

Chỉ cần một lưu ý cho những người cùng chơi: 12029 dường như là một kết nối bị ngắt. Tham khảo: http://stackoverflow.com/questions/872206/http-status-code-0-what-does-this-mean-in-ms-xmlhttp/905751#905751 –

+0

Chỉ là "cảm ơn" gần 4 năm sau từ một "người googler đồng nghiệp". D ** n IE8 @AndrewDunkman – jonayreyes