1

当我使用<form action="code.php?id=1" method="post"></form>时,表单 id 在 URL 中传递。但是,当我通过将 'POST' 替换为 'GET' 来编写相同的代码时,id 不会传递给 URL。

为什么?

4

3 回答 3

4

当您提交 GET 表单时,表单中的值将附加到actionURL,作为?. 在此类表单的属性中指定现有查询字符串action会产生歧义。浏览器不会合并这两个查询字符串,它们只是丢弃旧的查询字符串并基于表单构建新的查询字符串。

使用 POST 表单,没有歧义:表单中的数据与 URL 分开发送,因此不需要覆盖查询字符串。

但是,最好不要混合这两种参数,因此解决方案总是将额外参数包含为隐藏字段,然后它将适用于 GET 和 POST 表单:

<input type="hidden" name="id" value="1">
于 2013-09-28T05:48:49.197 回答
2

更好的方法是通过id隐藏字段。

<form action="code.php" method="post">
    <input type="hidden" value="1" name="id" />
</form>
于 2013-09-28T05:43:43.100 回答
0

如果您的表格如下

<form action="code.php?id=1" method="post">
<input typ"text" name="username" />
<input type="submit" />
</form>

code.php 中的示例脚本

<?php
print_r($_GET);
print_r($_POST);
print_r($_REQUEST);
?>

您将在 post 数组中获取表单数据,在 get 数组中获取 url 参数,在请求中,您将在一个数组中获取 get 和 post 数据。但是,如果您从 post 更改为 get 方法,您的表单数据将使用 url 添加而不是附加。这个问题是因为模棱两可。要在这种情况下获得解决方案,请在您的表单中创建一个隐藏字段,您还想使用查询字符串发送这些字段。

于 2013-09-28T05:52:36.003 回答