不,name 属性不需要是唯一的。您可以在多个输入字段中具有相似的 name 属性(例如,单选按钮背后的整个原理)。当您提交表单时,现代浏览器通常会看到一系列信息。我给你举个例子,我用 PHP 来解析信息,但重点在于其他编程语言。
举个例子:
<fieldset name="attendee">
<input name="full-name">
</fieldset>
<fieldset name="next-of-kin">
<input name="full-name">
</fieldset>
如果您 var_dump() 取决于您的方法 POST/GET,您将看到浏览器实际上只记住了 full-name 属性记录的最后一个值。基本上,如果您的第一个输入是John Doe(在attendee 字段集下),而您的第二个输入是John Green(在next-of-kin 字段集下),则无论您使用哪种方法,浏览器都只会记住John Green。如果您使用 GET 方法,则只有您的 URL 将包含两个 full-name 属性,而不是实际的 $_GET 数组本身。
如果您想记录这两个名称,您可以将代码编辑为:
<fieldset name="attendee">
<input name="full-name[]">
</fieldset>
<fieldset name="next-of-kin">
<input name="full-name[]">
</fieldset>
通过使用[],浏览器知道不要只记住该属性的最后一个值。现在,如果您执行var_dump(),无论您使用哪种方法,您都应该看到:
array(1) { ["full-name"]=> array(2) {
[0]=> string(8) "John Doe"
[1]=> string(10) "John Green"
}
}
如果您想更具体一些(因为您在其中一个 cmet 中提到您在 REST API 中使用它),您可以像这样编辑您的代码:
<fieldset name="attendee">
<input name="full-name[attendee]">
</fieldset>
<fieldset name="next-of-kin">
<input name="full-name[next-of-kin]">
</fieldset>
现在如果你提交表单,不管是什么方法,你都会得到如下的数据结构:
array(1) { ["full-name"]=> array(2) {
["attendee"]=> string(8) "John Doe"
["next-of-kin"]=> string(10) "John Green"
}
}
从这里调用这个数组上的json_encode() 并获得一个可以与 API 一起使用的实际 JSON 对象(如下所示)是相当简单的:
{"full-name":{"attendee":"John Doe","next-of-kin":"John Green"}}