【问题标题】:Form elements naming case and duplication?表单元素命名大小写和重复?
【发布时间】:2011-09-18 08:54:54
【问题描述】:

假设我的表单有 2 个输入

<input name="person_name" value="John" type="text" />
<input name="person_name" value="Jean" type="text" />

提交表单时,我会得到哪个“person_name”?约翰还是琼?

如果我有

<input name="city" value="New York" type="text" />
<input name="City" value="New York" type="text" />

我会只得到“城市”或“城市”还是两者兼而有之?

【问题讨论】:

  • 如果你想同时使用name="person_name[index]"

标签: html forms


【解决方案1】:

您将收到两个 person_name 值(即 John 和 Jean)发送到服务器,然后由服务器决定如何处理它。您可以在表单中拥有任意数量的具有相同名称的元素; [] 符号只是一些框架用来将表单结构传递给服务器的符号,以便服务器可以在没有额外指令的情况下将其解包,并且程序员不必区分具有一个值的列表和单个值。

您还将获得单独的 cityCity 参数,这将由服务器代码决定如何处理。

来自HTML4 standard

每个成功的控件都将其控件名称与其当前值配对,作为提交的表单数据集的一部分。成功的控件必须在 FORM 元素中定义,并且必须具有控件名称。

其中没有关于从具有相同 name 属性的多个文本输入中仅选择一个文本输入的内容。

【讨论】:

  • 您是说它是特定于服务器、语言还是“框架”?换句话说,如果names 相同,我可以将服务器配置为不“丢失”任何输入吗?当你说框架时,你到底指的是什么?自从我开始编写 HTML 以来,我一直处于我的帖子中的假设之下。有没有机会启发我?
  • @Wesley:括号是特定于框架的。 HTML、CGI 和 HTTP 对括号或它们的传统含义一无所知。
  • 当你说“框架”时你在说什么?一个框架的例子? AFAIK 这与框架无关,至少与我习惯用于该词的含义无关。示例:Rails、CakePHP、Django...
  • @Wesley:该框架位于服务器和您的代码之间。 Rails 和 Django 肯定符合要求。 PHP 本身有点模糊这条线。
  • @muistooshort:但是,rails 是一个 Ruby 框架,而 Django 是一个 Python 框架,而 PHP 本身就是一门语言。是否可以用其他语言访问示例 1 中的两个值,因为我仍然不理解框架参数?
【解决方案2】:
  1. name 两个属性值都区分大小写。

如果您想接收同一个name 的多个值,请考虑使用brackets[] 作为它的值,它将作为值数组发布。否则,最后一个值将始终覆盖前一个值。

编辑:这适用于至少阅读 PHP 中的$_REQUEST$_GET$_POST 值,但as I've learned recently - 这是@ 987654322@。但是,如果您使用的是 PHP(据我所知),则需要使用括号语法将输入读取为值数组。

【讨论】:

  • 错了。括号与 HTML 表单无关,只是符号。
  • 你是说接收数组的括号语法不通用?我假设两个值都在示例 1 中发送,但分配给相同的索引,覆盖最后一个值。
  • 是的,如果您使用不同的语言(或者甚至只是不同的解析库而不是内置的 PHP 解析库),您可以在没有括号约定的情况下获得它们。例如,mod_perl's libapreq.
  • @muistooshort:感谢您的时间 mu,我学到了一些有价值的东西。 @user433531:很抱歉“接管”你的帖子,但我希望你也学到了一些东西!
  • 非常感谢这次讨论,感谢你们两位的大力帮助:D
猜你喜欢
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
  • 2019-03-20
  • 2017-01-31
  • 2019-04-10
  • 2010-12-10
  • 2017-04-17
  • 1970-01-01
相关资源
最近更新 更多