我正在开发一个简单的HTML表单,我无法弄清楚为什么以下代码可以在Chrome上运行,但不能在Firefox中运行。
<!DOCTYPE html>
<html>
<body>
<form action="/hello.html" method="get">
<input type="submit" value="Submit">
</form>
</body>
</html>
过了一会儿,我发现问题是动作网址中的斜线。
当表单操作以正斜杠('/')开头时,表单不会在firefox中提交。
如果操作代码中没有“/”,则按“提交”按钮会导致重定向到hello.html
页面。
对我来说,这种行为很奇怪。我认为在带有正斜杠的表单标记的action属性中启动(相对)URL是有效的。 你对这种行为有一些解释吗?
答案 0 :(得分:2)
它适用于谷歌浏览器,因为Chrome是宽容的(或智能的)。你的意思是:
<form action="hello.html" method="get">
或
<form action="./hello.html" method="get">
与/hello.html
有什么区别?
我们假设您的文件的URI是file:///c:/somedir/index.html
./hello.html
和hello.html
都解析为file:///c:/somedir/hello.html
,因为它们引用了当前目录。
但/hello.html
解析为file:///c:/hello.html
,因为根据http://www.ietf.org/rfc/rfc2396.txt(第16页)
以单个斜杠字符开头的相对引用被称为 绝对路径参考...
答案 1 :(得分:0)
以下示例有效。我不确定为什么你的代码不起作用。
<html>
<body>
<form action="/my-handling-form-page" method="post">
<div>
<label for="name">StackOverflow name:</label>
<input type="text" id="name" />
</div>
<label for="mail">Email:</label>
<input type="email" id="mail" />
</div>
</form>
</body>
</html>
但是,当我从您的代码中删除<!DOCTYPE html>
时,它也开始工作了。