使用 AJAX 时,表单的“动作”属性是不是无用?
Posted
技术标签:
【中文标题】使用 AJAX 时,表单的“动作”属性是不是无用?【英文标题】:Is a form's "action" attribute useless when using AJAX?使用 AJAX 时,表单的“动作”属性是否无用? 【发布时间】:2019-10-23 22:37:58 【问题描述】:对于仅通过 AJAX 提交的表单,由于阻止了默认的 html 提交行为,设置 action
属性有什么好处吗?我还没有找到任何 AJAX 形式的说明页面说它可以省略,但我没有看到设置它的意义,所以我想我会问。如果 javascript 被禁用(这种情况变得越来越少见,而且我的代码在没有 JS 的情况下在其他方面毫无用处),它是否只是作为后备,还是我忽略了其他一些好处?
【问题讨论】:
我认为,正如你所说,这是一个历史性的后备。 AJAX 调用可能会使用 action 属性值,但这只是一个实现决策(可能不是一个好的决策)。我认为很少有 Web 开发人员可以编写一个无需 javascript 即可运行的非平凡 Web 应用程序。该技能似乎与可访问性(在大多数网站上完全被破坏)一样。 【参考方案1】:如果您想支持回退行为,例如在 JavaScript 错误阻止 JS 提交的情况下,您将需要一个 action
属性。不过,您不一定需要它。
您可能需要它的一种情况是,如果您遵循“不显眼”的方法,该方法鼓励您在后端呈现表单时设置action
,然后当您通过 JS (AJAX) 提交表单时,您使用action
的值作为请求的目标。
在任何情况下,即使通过 JavaScript 提交,您也总是希望在表单上设置 method
;默认值为GET
,这导致表单值在查询字符串中提交。当在没有 TLS 的情况下发出请求时,此信息会以明文形式传输,即使使用 TLS,它也会最终出现在缓存中,这可能导致信息被泄露(例如,来自共享计算机)。
【讨论】:
以上是关于使用 AJAX 时,表单的“动作”属性是不是无用?的主要内容,如果未能解决你的问题,请参考以下文章