HTML中的action =“”和action =“#”之间的区别

时间:2013-12-21 15:13:11

标签: php html forms

我见过两种设置表单动作属性的方法。

#1。空操作属性:

action=""

#2。 #的操作属性:

action="#"

两者有什么区别?

2 个答案:

答案 0 :(得分:6)

第一个("")解析为基本网址,第二个(#)解析为文档网址。

以下内容完全有效:

<form action="" method="post">
    <p><input type="submit"/></p>
</form>

现在要注意,根据HTML4 specificationaction属性是必需的,并且它必须包含有效的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)(可能是向后兼容性,因为大多数浏览器在历史上以这种方式实现它。)