<form id = "myForm" action="localhost" method="get">
<input name="liftString" type="text">
<input type="submit">
</form>
单击提交按钮时,此表单不执行任何操作。我没有被重定向到localhost
。
如果我将action
属性更改为"/localhost"
,则会在本地运行表单时尝试将我带到file:///localhost?liftString=d
。
如果我将action
更改为"http://localhost"
,则正确地将我带到http://localhost/?liftString=f
。
发布的表单示例中发生了什么?为什么单击提交时表单不执行任何操作?
澄清:我了解action="/localhost"
和action="https://localhost"
时的情况。我不明白的是为什么当我action="localhost"
时没有发生。
答案 0 :(得分:4)
不以方案(例如http://
)或方案相对指标(//
)开头的网址与当前网址相关(除非被<base>
覆盖
因此,浏览器获取当前页面的URL,在其中的最后一个/
之后删除所有内容,附加相对URL(localhost
),然后在此之后添加查询字符串。
由于您使用file://
方案来查看页面,因此表单将提交到您的计算机上没有HTTP服务器的文件来处理表单数据。由于文件localhost
不存在,浏览器只会忽略表单提交请求。