0

向各种 Web 服务器发送同名查询参数的支持程度如何(如果有的话)?IE

<form ...>
    <input name="a" value="va" />
    <input name="a" value="vb" />

大多数服务器会将其解释为数组还是其中一个值会被破坏?即当访问“a”时,PHP 的 $_REQUEST 会返回一个数组吗?或者这只会返回其中一个值?是否所有(体面的)Web 服务器都需要支持这些输入并返回一个数组?

4

2 回答 2

2

答案完全取决于您使用的框架。当查询 URL 参数的值时,某些框架会返回给定名称的第一个参数。有些返回该名称的最后一个参数。其他人返回该名称的参数的逗号分隔列表。还有一些返回该名称的参数字符串数组。

HTTP 本身并没有提供任何关于参数名称唯一性的指导,甚至也没有定义查询字符串的格式。a=b&c=d语法只是 HTML 表单使用的约定,但其他格式是完全合法的,并且确实在某些场景中使用。

于 2013-08-27T17:41:28.243 回答
0

根据W3C HTML 4.01 规范,复选框输入控件至少允许共享相同的名称,以“允许用户为同一属性选择多个值”(参见第 17.2.1 节)。对于单选按钮,实际上需要共享相同的名称,以确定哪些属于同一个集合。(然而,这导致只有一个值被发送到服务器。)HTML 4 规范似乎没有说明是否允许其他输入类型共享名称,但它应该与复选框相同。

HTML 5 规范实际上确实在第 4.10.1.3 节中明确指出“多个控件可以具有相同的名称” 。鉴于 HTML 已经存在了很长时间,并且 HTML 5 规范与 4 没有太大区别,至少对于表单而言,我认为可以肯定地说大多数现代浏览器/服务器将正确处理这种情况,而不是破坏价值观。当然,最好的确定方法是在您关心的那些浏览器/服务器上亲自尝试。

于 2013-08-27T04:39:08.220 回答