支持(如果有的话)向各种Web服务器发送具有相同名称的查询参数的程度如何?即
<form ...>
<input name="a" value="va" />
<input name="a" value="vb" />
大多数服务器会将此解释为数组还是其中一个值被破坏? 即,来自PHP的$ _REQUEST在访问“a”时会返回一个数组吗?或者这只会返回其中一个值?并且所有(体面的)Web服务器都需要支持这些输入并返回一个数组吗?
答案 0 :(得分:2)
答案完全取决于您使用的框架。当查询URL参数的值时,某些框架返回给定名称的第一个参数。有些返回该名称的最后一个参数。其他人返回以逗号分隔的该名称参数列表。然而其他人则返回该名称的一系列参数字符串。
HTTP本身不提供有关参数名称唯一性的任何指导,甚至也不定义查询字符串的格式。 a=b&c=d
语法仅仅是HTML表单使用的约定,但其他格式完全合法,确实在某些情况下使用。
答案 1 :(得分:0)
根据W3C HTML 4.01 spec,至少允许复选框输入控件共享相同的名称,以便“允许用户为同一属性选择多个值”(参见第17.2.1节)。对于单选按钮,实际上需要共享相同的名称,以便确定哪些属于同一组。 (但这导致只有一个值被发送到服务器。)HTML 4规范似乎没有说明是否允许为其他输入类型共享名称,但它应该与复选框的工作方式相同。
HTML 5规范确实在section 4.10.1.3中具体说明了“多个控件可以具有相同的名称”。鉴于HTML已经存在了很长时间并且HTML 5规范与4没有区别,至少对于表单而言,我认为可以肯定地说大多数现代浏览器/服务器将正确处理这种情况而不是破坏价值观。当然,最好的方法是在您关注的浏览器/服务器上自行尝试。