2012-01-23 17 views
5

Về cơ bản, nó tóm tắt, có bất kỳ trường hợp nào sẽ là xấu để tôi gọi hàm gọi lại thành công trên mã trạng thái dưới 400 không?Thành công với mã trạng thái AJAX <400?

Khi nhìn vào list of status codes for HTTP, tôi không nghĩ sẽ có nhưng tôi muốn đảm bảo. Tôi không nghĩ rằng tôi sẽ nhận được mã số 1XX vì chúng trông giống như hầu hết trong số chúng quay trở lại trước khi yêu cầu đầy đủ được xử lý và readyState === 4 (Tôi không quan tâm đến 122 của IE 7). Và tôi vẫn muốn trả lại thành công trên mã trạng thái 302 và 304. Vì vậy, có phải là status < 400 một cách có thể chấp nhận được để nắm bắt tất cả điều này không?

+1

Sử dụng mã trạng thái HTTP để báo hiệu thành công/thất bại của hiệu suất của tập lệnh xử lý thường không phải là một ý tưởng hay. Mã trạng thái HTTP nên được giới hạn để báo hiệu lỗi cấp http, không phải "zomg, yêu cầu tìm kiếm của bạn không tìm thấy bất kỳ kết quả nào". –

+0

@MarcB Mã này sẽ thành công và thất bại khi tải các thành phần thiết yếu. Điều này sẽ được cho một trò chơi HTML 5 và tôi sẽ sử dụng một kịch bản ban đầu để tải tất cả các nội dung trong khi tôi hiển thị một màn hình tải. Đây là nơi thành công/thất bại trở nên quan trọng. Nếu một cái gì đó không tải, tôi cần phải xử lý nó và hiển thị một thông báo có liên quan. – Ktash

+1

Sau đó, có đáp ứng trả về một đối tượng json, một cái gì đó dọc theo dòng của '{" lỗi ": true," mã ": 401}' và kiểm tra xem. báo hiệu http 401 cho biết có điều gì đó đã xảy ra ở cấp http, điều này không đúng, mọi thứ về yêu cầu http đã hoạt động hoàn hảo. –

Trả lời

1

xây dựng trên @sarnold's concerns, nó trông giống như XMLHttpRequest specifications nói như sau:

Nếu câu trả lời là một chuyển hướng HTTP (mã trạng thái 301, 302, 303 hoặc 307), sau đó nó phải được tuân thủ một cách minh bạch (trừ khi vi phạm các biện pháp phòng ngừa an ninh hoặc vòng lặp vô hạn . Bất kỳ lỗi nào khác (bao gồm 401) PHẢI khiến đối tượng sử dụng trang lỗi đó làm phản hồi.

Có vẻ như cho tôi biết phản hồi 2XX hoặc 3XX là hợp lệ. Vì vậy, trong ngắn hạn, phát hiện của tôi cho thấy status < 400 là một kiểm tra phản ứng trạng thái thích hợp.

1

A 301 nghĩa là khách hàng chịu trách nhiệm thực hiện lại cuộc gọi HTTP bằng URL mới. Thư viện hoặc bộ công cụ của bạn đã xử lý điều này cho bạn chưa?

+0

Tôi không sử dụng thư viện. Đây là tất cả mã tùy chỉnh trong Javascript thẳng. Điều này rất tốt có thể là câu trả lời của tôi mặc dù nếu đối tượng 'XMLHttpRequest' không tự động xử lý điều này. – Ktash

+1

Từ bảng thông số ['XMLHttpRequest'] (http://www.w3.org/TR/2006/WD-XMLHttpRequest-20060405/):" Nếu phản hồi là chuyển hướng HTTP (mã trạng thái 301, 302, 303 hoặc 307), sau đó nó phải được minh bạch theo sau (trừ khi nó vi phạm biện pháp phòng ngừa vòng lặp an toàn hoặc vô hạn) .Bất kỳ lỗi khác (bao gồm 401) PHẢI khiến đối tượng sử dụng trang lỗi đó làm phản hồi. " Có vẻ như tôi có thể an toàn với 301. – Ktash

+0

Tuyệt vời. Bạn có thể muốn thêm nó như một câu trả lời - nó có thẩm quyền hơn nhiều so với việc đọc của tôi về đặc tả HTTP. :) – sarnold