【发布时间】:2014-06-02 02:48:08
【问题描述】:
传统上,表单是从客户端将数据发送回服务器的唯一方法。当用户单击表单的submit 按钮时,表单内具有name 属性的任何元素都将发送到服务器,并且服务器可以使用任何这些元素的值。程序员可以将value 属性硬编码到元素中,并且不允许用户更改它,例如复选框、单选按钮和禁用的文本控件,或者可以允许用户更改值,例如用于常规文本控件。如果程序员没有硬编码value 属性并且它不是允许用户更改它的元素,我相信它会得到值"true"(如果启用)和"false"(如果启用)禁用。 "Enabled" 和 "disabled" 对于不同的元素可能意味着不同的东西。
5 之前的 HTML 要求所有这些元素都以某种形式存在,以便服务器获取它们的值,并且它只获取与 submit 按钮关联的元素的值,无论是否这些元素具有name 或value 属性。 HTML5 仍然要求元素与要提交给服务器的表单相关联,但它们不再需要inside 表单了。 HTML5 有办法实现这一点,通常是通过向相关元素添加form*something* 属性。
我的问题是,为什么会发生这一切?表单有什么特别之处,以至于直到最近它们才成为向服务器发送数据的唯一方式?
【问题讨论】:
-
表单早在 AJAX 成为现实之前就已经存在。也不是每个人的浏览器都启用了 JavaScript。对于基于 HTTP 的更好的客户端->服务器接口,您有什么建议?
-
您似乎已经回答了自己的问题(并同时驳斥了 de facto 部分 - 它在标准中 de jure )。
-
抱歉,我将其更改为 de jure。不过,我在问为什么它成为标准,@SimchaKhabinsky 几乎回答了。
-
Appleshell,AJAX 不会替换表单。它只是允许我们根据各种标准加载动态内容。它不是使用输入字段从用户那里收集数据的替代方法。
-
它可以是一个替代方案,虽然不是单独的,如果这就是你的意思。它可以替换
submit按钮,尽管您显然仍然需要某种标签。不过,这些不必是input元素。
标签: html forms name-attribute