传统上,表单是从客户端将数据发送回服务器的唯一方法。当用户单击表单的name
按钮时,表单中具有submit
属性的任何元素都将被发送到服务器,并且服务器可以使用任何这些元素的值。程序员可以将value
属性硬编码到元素中,并且不允许用户更改它,例如复选框,单选按钮和禁用的文本控件,或者可以允许用户更改值,例如用于常规文本控件。如果程序员没有硬编码value
属性并且它不是允许用户更改它的元素,我相信它会获得值"true"
(如果已启用)和{{1如果它被禁用了。 "false"
和"Enabled"
对于不同的元素可能意味着不同的东西。
5之前的HTML要求所有这些元素都以某种形式存在,以便服务器获取它们的值,并且它只获得"disabled"
按钮所关联形式的元素值,元素是否具有submit
或name
属性。 HTML5仍然要求元素与要提交给服务器的表单相关联,但它们不再需要在表单中。 HTML5提供了实现此目的的方法,通常是通过向相关元素添加value
属性。
我的问题是,为什么这一切都会产生?表格有什么特别之处,它们几乎成为直到最近才将数据发送到服务器的唯一方式?
答案 0 :(得分:3)
我想回答这个问题的最简单方法是:它是必需的,但仍然需要。
<form>
是一个html标记,可让您执行GET
/ POST
/等。操作,无需在javascript /服务器端编写任何代码。
我认为这是这个问题的简单答案。当有需要时...有办法。
你可以用其他10种方式做到这一点,但普通的hilla html版本是<form>
答案 1 :(得分:1)
<form>
为用户代理定义了一个简单的边界,以便能够识别要提交给服务器的所有元素。它还允许用户代理将方便的默认行为附加到表单和表单的子元素。例如,能够输入并提交表单数据。它还允许一个地方通过表单元素上的属性指定数据的去向。因此,默认情况下,没有JavaScript,所有这些行为都可用同时,它还允许通过DOM(form.elements集合)轻松访问JavaScript
为什么它发生了变化是因为大量网站现在正在使用AJAX提交数据,在这些情况下不需要默认行为。表格通常只能作为形式包含在内,并且没有相关属性。
因此,在HTML5中,他们允许使用旧模式,并为可能使用AJAX而不需要默认行为的开发人员扩展了功能。或者对于可能需要灵活性的设计人员来说,他们放置表单元素(在传统层次结构之外),同时创建连接并保持语义活跃。