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
,除非您确实需要表单元素的极少数特殊情况。在我脑海中浮现:
reset form
按钮时(据我所知,该按钮仅在正确的<form>
中可用)。
【讨论】:
您可以使用field.value= field.defaultValue
(类似地defaultChecked
/defaultSelected
)手动重置表单字段。不过没什么好玩的。
我还发现表单 autocomplete=off 在某些情况下非常有用。【参考方案3】:
我看到至少两个可能的原因:
Graceful degradation (另请参阅Unobtrusive JavaScript):如果用户的浏览器中没有启用 Javascript,您的网站应该仍然可以使用普通的旧 HTML。 浏览器的行为:用户知道表单的外观和行为方式(自动完成、纠错,...);最好不要离那个太远
我还要补充一点,如果您希望用户输入一些数据,这就是存在<form>
和<input>
标签的原因;-)
使用正确的标签也可以帮助用户——例如,考虑使用某些特定软件导航的盲人用户:这些软件可能对表单和输入字段有特定的行为。
【讨论】:
后者是一个很好的观点,了解更多信息会很有趣。任何人都知道 w3c 规范是怎么说的 -input
元素 supposed 是 form
的孩子吗? (即使在现实世界中,它们通常不是。)
规范不在乎。无论如何,在 DTD 中表达这样的限制是不可能的。
我通过validator.w3.org 验证了一个简单的 HTML 页面。输入无表单也可以。【参考方案4】:
这真的取决于你在做什么。如果您想获取用户提交的表单内容并使用 AJAX 将其发送到某处,那么您将需要使用表单标签,以便您的用户可以在某处输入他们的数据。
在其他情况下,您不会从表单发送数据,在这种情况下,您将无需担心表单:)
【讨论】:
以上是关于AJAX Web 应用程序中是不是需要表单标签?的主要内容,如果未能解决你的问题,请参考以下文章
如果存在移动应用而不是 Web 表单,则 Twitter OAuth 应打开移动应用以进行授权