0

传统上,表单是从客户端将数据发送回服务器的唯一方法。当用户单击表单的按钮时,表单内具有name属性的任何元素都将发送到服务器submit,并且服务器可以使用任何这些元素的值。程序员可以将属性硬编码value到元素中,并且不允许用户更改它,例如复选框、单选按钮和禁用的文本控件,或者可以允许用户更改值,例如常规文本控制。如果程序员没有对value属性进行硬编码并且它不是允许用户更改它的元素,我相信它会获取值"true",如果它被启用,并且"false"如果它被禁用。"Enabled""disabled"对于不同的元素可能意味着不同的东西。

5 之前的 HTML 要求所有这些元素都采用某种形式,以便服务器获取它们的值,并且它只获取与submit按钮关联的表单中元素的值,无论元素是否具有nameorvalue属性. HTML5 仍然要求元素与要提交给服务器的表单相关联,但它们不再需要在表单内部。HTML5 有办法实现这一点,通常是通过向form*something*相关元素添加属性。

我的问题是,为什么会发生这一切?表单有什么特别之处,以至于直到最近它们才成为向服务器发送数据的唯一方式?

4

2 回答 2

3

我想回答这个问题的最简单方法是:它被需要并且仍然被需要。

<form>是一个html标签,可以让你执行GET/ POST/etc。无需在 javascript/serverside 中编写任何代码即可进行操作。


我认为这就是这个问题的简单答案。有需要的时候……有办法。您可以通过 10 种其他方式做到这一点,但普通的 html 版本是<form>

于 2014-06-02T02:51:41.980 回答
1

<form>为用户代理定义了一个简单的边界,以便能够识别要提交给服务器的所有元素。它还允许用户代理将方便的默认行为附加到表单和表单的子元素。例如能够点击回车并提交表单数据。它还允许一个地方通过表单元素的属性来指定数据的去向。因此,默认情况下,所有这些行为都可以在没有 JavaScript 的情况下使用。同时它还允许通过 DOM(form.elements 集合)在 JavaScript 中更轻松地访问

它之所以发生变化是因为大量站点现在使用 AJAX 来提交数据,在这些情况下不需要默认行为。通常形式可能只是作为一种形式而被包括在内,并且没有相关的属性。

因此,在 HTML5 中,他们允许使用旧模式,并为可能正在使用 AJAX 且不需要默认行为的开发人员扩展了功能。或者对于可能需要灵活放置表单元素的位置(传统层次结构之外)的设计师,同时创建连接并保持语义活跃。

于 2014-06-02T04:40:54.147 回答