2010-10-26 11 views
28

que tienen el código HTML con múltiples input s con el mismo nombre:¿Los navegadores conservan el orden de las entradas con el mismo nombre en GET/POST?

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

El orden de los valores es importante. ¿La especificación HTML define que los agentes de usuario deben preservar este orden y, en caso afirmativo, los navegadores comunes (cuota de mercado> 1%) siguen esta definición?

puntos de bonificación si alguien sabe si WSGI y especialmente Django preservar el lado del servidor fin :-)

Gracias!

Respuesta

34

Sí, y se deben enviar en el orden en que aparecen según la html rfc

Véase 8.2.1. La forma-urlencoded Tipo de papel:

Los campos se muestran en el orden en que aparecen en el documento con el nombre separado del valor por =' and the pairs separated from each other by &'. Los campos con valores nulos pueden omitirse. En particular, botones de opción no seleccionados y casillas de verificación no deberían aparecer en los datos codificados , pero los campos ocultos con atributos de VALOR presentes deberían.

que he encontrado en la especificación de html 4.0 también:

Para los datos codificados url:

Los nombres de los controles/valores se enumeran en el orden en que aparecen en el documento. El nombre está separado del valor por =' and name/value pairs are separated from each other by & '.

Para los datos de varias copias (gracias @Chuck):

A "multipart/form-data" mensaje de contiene una serie de partes, cada que representa un control exitoso. Las piezas se envían al agente de procesamiento en el mismo orden en que aparecen los controles correspondientes en la secuencia de documento . Los límites de parte no deben aparecer en en ninguno de los datos; cómo esto es hecho miente fuera del alcance de esta especificación .

+1

La misma garantía de pedidos también se da por otros tipos de varias partes. – Chuck

+0

Todavía estoy tratando de encontrar información sobre html 4.0, ese rfc era para html 2.0. Pero no creo que rompan la compatibilidad, sin embargo ... Todavía estoy buscando – Onkelborg

+0

Lo he encontrado. Actualizando la respuesta – Onkelborg

2

El HTML5 spec para application/x-www-form-urlencoded y text/plain expone un algoritmo que "para cada entrada en los datos del formulario ajustar [...] Agregar", resultando en el mismo orden.

En cuanto a multipart/form-data: "El orden de las partes debe ser el mismo que el de los campos en el conjunto de datos del formulario. Las entradas múltiples con el mismo nombre deben tratarse como campos distintos."

Esto no sería completa sin obtener orden de los datos de la forma establecidos tal como se deriva a partir del documento: la misma especificación define un algoritmo para constructing the form data set que " Loop: Para cada campo elemento en los controles, con el fin árbol, ejecute las siguientes subetapas y sólo se saltan o anexar una entrada.

Por lo tanto para los agentes de usuario compatibles con HTML5, cualquiera que sea la codificación, los parámetros no omitidos están clasificadas-árbol, con duplicados permitidos.

Cuestiones relacionadas