AJAX Web 应用程序中是不是需要表单标签?

Posted

技术标签:

【中文标题】AJAX Web 应用程序中是不是需要表单标签?【英文标题】:Is Form Tag Necessary in AJAX Web Application?AJAX Web 应用程序中是否需要表单标签? 【发布时间】:2011-02-11 21:10:48 【问题描述】:

我阅读了一些 AJAX-Form 教程,例如 this。标签 form 用于 html 代码。但是,我认为没有必要。由于我们通过XmlHttpRequest发送HTTP请求,所以发送的数据可以是任何东西,不需要form中的input

那么,有没有理由在 HTML 中为 AJAX 应用程序添加 form 标签?

【问题讨论】:

【参考方案1】:

除了已经讨论过的渐进增强(不要让您的网站需要 javascript,直到它真的需要),<form>onsubmit 将是可靠地捕获 Enter 键所必需的提交。

(当然,您可以尝试在单独的表单字段上捕获按键,但它很繁琐、脆弱,并且永远不会 100% 重现浏览器在构成表单提交方面的本机行为。)

【讨论】:

【参考方案2】:

有时,当用户没有启用 JavaScript 时,使用 ajax 转换其数据的 Web 应用程序要么使用表单作为后备(有时很昂贵,但非常件好事)。

否则,如果应用程序构建并发送 AJAX 请求,则没有令人信服的理由使用 form,除非您确实需要表单元素的极少数特殊情况。在我脑海中浮现:

使用jQuery的表单序列化函数时 监控表单中所有字段的更改时 当需要使用reset form 按钮时(据我所知,该按钮仅在正确的<form> 中可用)。

【讨论】:

您可以使用field.value= field.defaultValue(类似地defaultChecked/defaultSelected)手动重置表单字段。不过没什么好玩的。 我还发现表单 autocomplete=off 在某些情况下非常有用。【参考方案3】:

我看到至少两个可能的原因:

Graceful degradation (另请参阅Unobtrusive JavaScript):如果用户的浏览器中没有启用 Javascript,您的网站应该仍然可以使用普通的旧 HTML。 浏览器的行为:用户知道表单的外观和行为方式(自动完成、纠错,...);最好不要离那个太远

我还要补充一点,如果您希望用户输入一些数据,这就是存在<form><input> 标签的原因;-)

使用正确的标签也可以帮助用户——例如,考虑使用某些特定软件导航的盲人用户:这些软件可能对表单和输入字段有特定的行为。

【讨论】:

后者是一个很好的观点,了解更多信息会很有趣。任何人都知道 w3c 规范是怎么说的 - input 元素 supposedform 的孩子吗? (即使在现实世界中,它们通常不是。) 规范不在乎。无论如何,在 DTD 中表达这样的限制是不可能的。 我通过validator.w3.org 验证了一个简单的 HTML 页面。输入无表单也可以。【参考方案4】:

这真的取决于你在做什么。如果您想获取用户提交的表单内容并使用 AJAX 将其发送到某处,那么您将需要使用表单标签,以便您的用户可以在某处输入他们的数据。

在其他情况下,您不会从表单发送数据,在这种情况下,您将无需担心表单:)

【讨论】:

以上是关于AJAX Web 应用程序中是不是需要表单标签?的主要内容,如果未能解决你的问题,请参考以下文章

如果存在移动应用而不是 Web 表单,则 Twitter OAuth 应打开移动应用以进行授权

HTML中ajax表单提交CSRF保护

关于AJAX的简单示例问题,高分!~

在 Asp.net Web 表单中向 ajax 自动完成功能添加两个值

form表单也Ajax区别

WEB基础——Form和Ajax的区别