2010-10-26 20 views
28

Tôi có HTML này mã với nhiều input s có cùng tên:Trình duyệt có giữ nguyên thứ tự các đầu vào có cùng tên trên GET/POST không?

<input type="hidden" value="42" name="authors" /> 
<input type="hidden" value="13" name="authors" /> 
<input type="hidden" value="33" name="authors" /> 

Thứ tự của các giá trị rất quan trọng. Liệu thông số HTML có xác định rằng các tác nhân người dùng phải giữ lại thứ tự này và nếu có, hãy làm các trình duyệt phổ biến (thị phần> 1%) theo định nghĩa này?

điểm thưởng nếu ai đó biết nếu WSGI và đặc biệt là Django giữ gìn trật tự server-side :-)

Cảm ơn!

Trả lời

34

Vâng, họ phải được gửi theo thứ tự chúng xuất hiện theo html rfc

Xem 8.2.1. Các form-urlencoded Loại Media:

Các lĩnh vực được liệt kê theo thứ tự chúng xuất hiện trong tài liệu với tên tách ra khỏi giá trị bằng cách =' and the pairs separated from each other by &'. Các trường có giá trị rỗng có thể bị bỏ qua. Cụ thể, các nút radio không được chọn và các hộp kiểm sẽ không xuất hiện trong dữ liệu được mã hóa , nhưng các trường ẩn với Các thuộc tính VALUE hiện diện nên.

tôi đã tìm thấy trong spec cho html 4.0 quá:

Đối url dữ liệu được mã hóa:

Tên kiểm soát/giá trị được liệt kê trong theo thứ tự chúng xuất hiện trong tài liệu. Tên được tách biệt với giá trị bởi =' and name/value pairs are separated from each other by & '.

Đối với dữ liệu nhiều phần dữ liệu (nhờ @Chuck):

A "multipart/form-data" nhắn chứa một loạt các bộ phận, mỗi đại diện cho một điều khiển thành công. Các bộ phận được gửi đến đại lý xử lý theo thứ tự tương ứng với các điều khiển tương ứng xuất hiện trong luồng tài liệu . Phần ranh giới không được xảy ra trong bất kỳ dữ liệu nào; cách thực hiện nằm ngoài phạm vi của đặc điểm này.

+1

Đảm bảo đặt hàng giống nhau cũng được cung cấp cho các biểu mẫu loại nhiều phần. – Chuck

+0

Tôi vẫn đang cố gắng tìm thông tin về html 4.0, mà rfc là dành cho html 2.0. Nhưng tôi không nghĩ rằng họ phá vỡ khả năng tương thích, tuy nhiên .. Vẫn đang tìm kiếm – Onkelborg

+0

Tôi đã tìm thấy nó. Cập nhật câu trả lời – Onkelborg

2

Các HTML5 spec cho application/x-www-form-urlencodedtext/plain đưa ra một thuật toán mà "Đối với mỗi mục trong các dữ liệu mẫu [...] Nối", kết quả theo thứ tự.

Đối với multipart/form-data: "Thứ tự các phần phải giống với thứ tự của các trường trong tập dữ liệu biểu mẫu. Nhiều mục có cùng tên phải được coi là các trường riêng biệt."

này sẽ không được hoàn thành mà không có trật tự của dữ liệu mẫu thiết lập như là có nguồn gốc từ các tài liệu: spec cùng xác định một thuật toán cho constructing the form data set rằng " Loop: Đối với mỗi lĩnh vực phần tử trong điều khiển, để cây, chạy các substeps sau đây và chỉ bỏ qua hoặc Gắn một mục nhập.

Vì vậy, đối với các đại lý người dùng tương thích HTML5, bất kể mã hóa, thông số không được bỏ qua được sắp xếp theo thứ tự cây, với các bản sao được phép.

Các vấn đề liên quan