Square brackets in HTML form arrays. Just conventional or with a meaning?
I frequently see, in particular in the PHP world, the following writing if you want to create a FORM array.
<input name="MyArray[]" />
<input name="MyArray[]" />开发者_StackOverflow
with the square brackets []. Nevertheless, the submit operation just passes the same key entry twice. It appears that the [] is just conventional that maps nicely to the PHP world array, but you would obtain the same result with just the following
<input name="MyArray" />
<input name="MyArray" />
Indeed, in django I get a list of two entries, regardless of the style used.
Is this true ? Are the [] just conventional, or there's actually a real meaning into it from the HTML and HTTP key/value info ?
They address a limitation of PHP, which doesn't generate an array automatically if multiple values with the same name are submitted, for example from a set of checkboxes or a multiple select. (IIRC it only returns the last value.)
Personally I've always thought it to be a pretty shoddy workaround. Even Classic ASP could cope with that without requiring client-side additions to markup. The server-side platform has no business imposing markup requirements on the client in this way.
It's just conventional.
The W3C states:
Let the
form data set
be a list of name-value-type tuples
and for each input element, on submit:
Append an entry to the
form data set
with name as thename
, the value of thefield
element as the value, andtype
as the type.
The W3C does not mention the use of []
or uniqueness of the name
attribute.
精彩评论