HTML表单适用于GET但不适用于POST

时间:2009-07-29 19:50:08

标签: html http forms post get

我正在运行Firefox 2.0.0.14。

我在网页上有一个表格可以正常使用GET方法。

我在提交表单时使用插件查看浏览器的HTTP请求,现在是:

GET /postComment.php?review=2&comment=Testing HTTP/1.1
...

但是,如果我在表单上进行从method = GET到method = POST的简单更改:

GET /postComment.php HTTP/1.1
...

它甚至没有尝试发布。

在任何情况下都有任何可能的原因?

编辑:这是表格:

<form method=POST action="postComment.php"><input type=hidden name=review value="2"><input type=submit value="Postit">
</form>

4 个答案:

答案 0 :(得分:0)

是否设置了表单标记的action参数? Javascript可以拦截帖子吗?您表单中的某些HTML会有所帮助,或者示例链接:)

答案 1 :(得分:0)

我猜你的插件没有捕获POST变量。由于插件的输出是:

GET /postComment.php HTTP/1.1

你是如何捕捉你的POST可用的?如果正确设置了表单操作和方法,则$ _POST ['key']或$ _REQUEST ['key']应包含您的值。

在查询字符串中找不到POST。

编辑: 如果您要捕获帖子值,可以使用以下内容进行检查:

if (isset($_REQUEST['submit'])) {
   echo $_REQUEST['review'];
}

if (isset($_POST['submit'])) {
   echo $_POST['review'];
}

橡子

答案 2 :(得分:0)

首先,我要确保您的HTML是有效的XHTML。将引号中的属性值换行,并使用/&gt;结束输入元素。使用有效的DOCTYPE

另外,尝试将提交按钮的值更改为“提交”(因为这是默认设置)。

在不同的浏览器中试用,包括最新版本的Firefox

答案 3 :(得分:0)

首先,您需要调整<form>代码:

<form method="post" ... >

其次,我有一个名为debugArray的函数,用于吐出行为不端的数组。它非常方便:

function debugArray($array){
    echo("<pre>");
    print_r($array);
    echo("</pre>");
}

然后,在你的代码中调用它:

debugArray($_POST);

通过查看$ _POST数组的全部内容,您可以准确地看到正在发送的内容,不发送的内容以及发送方式。

我愿意下注其中一项是真的:

  1. 您在字段名称中存在拼写错误,请记住这些名称具有区分性。
  2. 您的表单字段位于<form>标记之外。
  3. 您有一个未正确转义的值,或者因任何原因从$ _POST中删除的值。
  4. 编辑:我也倾向于更新你的Firefox副本。

相关问题