0

我在html页面中有以下表格

<form name="input" action="sayHello1.jsp?param1=test1" method="get">
Username: <input type="text" name="user">
<input type="submit" value="Submit">
</form>

我在文本框中输入值“test”并提交。

我希望在浏览器中看到提交的 URL

http://localhost:8080/helloWorld/sayHello1.jsp?param1=test1&user=test

但我认为网址为

http://localhost:8080/helloWorld/sayHello1.jsp?user=test 

为什么这样 ?

4

2 回答 2

2

HTML规范指出

当从元素提交者(通常是按钮)提交表单元素表单时,可选择设置脚本提交标志,用户代理必须运行以下步骤:

[...]

  • 让查询是使用 application/x-www-form-urlencoded 编码算法对表单数据集进行编码的结果,解释为 US-ASCII 字符串。

  • 设destination 是一个新的URL,它与action 相同,只是它的组件被query 替换(如果合适,添加一个U+003F QUESTION MARK 字符(?))。

基本上,它将现有查询字符串替换为从表单参数生成的新查询字符串。

您的浏览器遵循规范。

于 2014-04-14T18:21:17.913 回答
1

表单的实现似乎是重写查询字符串(而不是合并它)。要获得您想要的行为,请将 a 添加<input type="hidden" name="param1" value="test1">到您的表单中,并且不要尝试将值添加到操作 URL。

根据这个答案,我们应该期待这种行为。

因此,您的浏览器将丢弃 URI 中现有的“?...”部分,并根据您的表单将其替换为新的部分。

于 2014-04-14T18:16:25.817 回答