【问题标题】:Why Are Forms So Important in HTML? [closed]为什么表单在 HTML 中如此重要? [关闭]
【发布时间】:2014-06-02 02:48:08
【问题描述】:

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

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

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

【问题讨论】:

  • 表单早在 AJAX 成为现实之前就已经存在。也不是每个人的浏览器都启用了 JavaScript。对于基于 HTTP 的更好的客户端->服务器接口,您有什么建议?
  • 您似乎已经回答了自己的问题(并同时驳斥了 de facto 部分 - 它在标准中 de jure )。
  • 抱歉,我将其更改为 de jure。不过,我在问为什么它成为标准,@SimchaKhabinsky 几乎回答了。
  • Appleshell,AJAX 不会替换表单。它只是允许我们根据各种标准加载动态内容。它不是使用输入字段从用户那里收集数据的替代方法。
  • 它可以是一个替代方案,虽然不是单独的,如果这就是你的意思。它可以替换submit 按钮,尽管您显然仍然需要某种标签。不过,这些不必是 input 元素。

标签: html forms name-attribute


【解决方案1】:

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

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


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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 2017-11-29
      • 2020-01-01
      • 1970-01-01
      相关资源
      最近更新 更多