2010-10-26 9 views
28

Ho questo codice HTML con più input s con lo stesso nome:I browser mantengono l'ordine degli ingressi con lo stesso nome su GET/POST?

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

L'ordine dei valori è importante. Le specifiche HTML definiscono che gli user agent devono conservare questo ordine, e in caso affermativo, i browser comuni (market share> 1%) seguono questa definizione?

punti di bonus se qualcuno sa se WSGI e soprattutto Django preservare il lato server ordine :-)

Grazie!

risposta

34

Sì, essi devono essere inviate nell'ordine in cui appaiono secondo il html rfc

Vedi 8.2.1. Il form-urlencoded Tipo di supporto:

I campi sono elencati nell'ordine in cui appaiono nel documento con il nome separato dal valore =' and the pairs separated from each other by &'. I campi con valori nulli possono essere omessi. In particolare, i pulsanti di opzione deselezionati e le caselle di controllo non devono apparire nei dati codificati , ma devono essere visualizzati i campi nascosti con gli attributi VALUE VALUE.

ho trovato nelle specifiche per html 4.0 troppo:

Per url dati codificati:

i nomi dei controlli/valori sono elencati in nell'ordine in cui appaiono nel documento. Il nome è separato dal valore da =' and name/value pairs are separated from each other by & '.

Per i dati a più parti (grazie @Chuck):

A "multipart/form-data" messaggio contiene una serie di parti, ciascuna rappresenta un controllo efficace. Le parti vengono inviate all'agente di elaborazione nello stesso ordine dei controlli corrispondenti nel flusso di documento . I contorni delle parti non dovrebbero essere presenti in nessuno dei dati; il modo in cui questo è fatto non rientra nell'ambito di questa specifica .

+1

La stessa garanzia di ordinazione viene fornita anche per moduli di tipo multipart. – Chuck

+0

Sto ancora cercando di trovare informazioni su html 4.0, che rfc era per html 2.0. Ma non credo che rompano la complicazione, comunque .. Sto ancora cercando – Onkelborg

+0

L'ho trovato. Aggiornamento della risposta – Onkelborg

2

Il HTML5 spec per application/x-www-form-urlencoded e text/plain delinea un algoritmo che "Per ogni prodotto menzionato nelle dati del modulo impostato [...] Aggiungi", con conseguente nello stesso ordine.

Quanto multipart/form-data: "L'ordine dei componenti deve essere la stessa come l'ordine dei campi del record di dati forma inserimenti multipli con lo stesso nome devono essere trattati come campi distinti.."

Ciò non sarebbe completa senza ordine dei dati di modulo impostato come derivato dal documento ottenimento: la stessa specifica definisce un algoritmo per constructing the form data set che " loop: Per ogni campo elemento nei controlli, al fine albero, eseguire la seguente sottofase e saltare solo o Aggiungere una voce.

Pertanto per i programmi utente HTML5-compliant, qualunque sia la codifica, i parametri non sono saltati albero ordinato, con i duplicati ammessi.

Problemi correlati