我见过两种设置表单动作属性的方法。
#1。空操作属性:
action=""
#2。 #
的操作属性:
action="#"
两者有什么区别?
答案 0 :(得分:6)
第一个(""
)解析为基本网址,第二个(#
)解析为文档网址。
以下内容完全有效:
<form action="" method="post">
<p><input type="submit"/></p>
</form>
现在要注意,根据HTML4 specification,action
属性是必需的,并且它必须包含有效的URI。但根据URI RFC,空URI仍然是URI:
不包含URI的URI引用是对当前文档的引用。换句话说,文档中的空URI引用被解释为对该文档的开头的引用,并且仅包含片段标识符的引用是对该文档的所标识的片段的引用。遍历此类引用不应导致额外的检索操作。但是,如果URI引用发生在始终旨在产生新请求的上下文中(如HTML的FORM元素的情况),则空URI引用表示当前文档的基URI,应该由该URI替换转换成请求时。
(摘自this page)
虽然它是强制性的,但如果没有指定动作属性,大多数(如果不是所有)浏览器都会回发给响应的发起者。
在HTML5中,action
属性不是必需的。来自specs:
操作和编码内容属性,如果指定,必须具有可能由空格包围的有效非空URL的值。
相关:
答案 1 :(得分:0)
第一个解析为当前页面的网址*
(保留URL中的任何片段标识符,您也可以完全省略action
属性),另一个解析到页面顶部(删除已经存在的任何片段标识符。)
*
鉴于正常的网址解析,我认为它会解析到当前网页的网址中的查询字符串和片段ID之前的最后/
,但是HTML 5 special cases empty strings here (step 8)(可能是向后兼容性,因为大多数浏览器在历史上以这种方式实现它。)