【问题标题】:I can send form data using GET method but not POST, why?我可以使用 GET 方法发送表单数据,但不能使用 POST,为什么?
【发布时间】:2017-07-06 21:22:05
【问题描述】:

所以我正在尝试学习 html+php,但似乎我碰壁了。如果我在我的 html 表单中使用 GET 方法,参数会很好地发送到我的 php 文件,但如果我尝试使用 POST 方法执行相同操作,则不会发送任何参数。

@Edit:我已经删除了此处显示的初始代码示例,因为我发现它不是特定于该代码的问题。相反,我发布了一个具有相同问题的基本表单和一个基本 php 脚本:

HTML 文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="testingForm.php" method="POST">
        INPUT: <input type="text" id="iTesting" name="nTesting"/><br/>
        <input type="submit" value="SUBMIT"/>
    </form>
</body>
</html>

PHP 文件:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"/>
    <title></title>
</head>
<body>
<?php
    /* THIS WORKS: */
    /*if (isset($_GET["nTesting"]))
        echo "It is working! ".$_GET["nTesting"];
    else
        echo "It is NOT working! input: ".$_GET["nTesting"];
    echo "<br/>".$_SERVER['REQUEST_METHOD']."<br/>";
    echo "<br/>".var_dump($_GET);//*/

    /* THIS DOESN'T: */
    if (isset($_POST["nTesting"]))
        echo "It is working! ".$_POST["nTesting"];
    else
        echo "It is NOT working! input: ".$_POST["nTesting"];
    echo "<br/>".$_SERVER['REQUEST_METHOD']."<br/>";
    echo "<br/>".var_dump($_POST);//*/
?>
</body>
</html>

如前所述,如果我将表单方法更改为 GET,则完全没有问题。但是,使用 POST 方法时似乎没有发送数据。

这是使用 GET 方法的输出:

它正在工作!输入:测试

获取

array(1) { ["nTesting"]=> string(4) "test" }

这是使用 POST 方法的输出:

它不工作!输入:

发布

数组(0) { }

此外,使用开发人员工具,我可以看到网络选项卡的 formData 部分中有一个参数 nTesting:test。然而,什么都没有显示。

【问题讨论】:

  • var_dump($_POST);
  • 什么是$_SERVER['REQUEST_METHOD']
  • 转到开发者工具的“网络”选项卡,查看提交表单时发送的内容。
  • 表单和php是分开的还是同一个页面?
  • 转到开发者工具中的元素检查器,看看您是否看到method="GET"method="POST"

标签: php html forms


【解决方案1】:

如果您使用的是 Chrome

  1. 转到 index.html
  2. 按 f12。将显示开发者工具
  3. 点击网络
  4. 勾选 Preserve Log and Disable Cache(我通常就是这样做的)
  5. 从 index.html 点击提交按钮(不要关闭开发工具)
  6. 返回开发者工具点击'teste.php'
  7. 单击标题,然后展开常规。您将看到“请求方法”。应该是 POST

在使用 @MuriloRM 之后,我们发现了 PHPStorm 的基本错误

请对问题的解决方案投票 https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000097930-Can-not-use-POST-method-in-PhpStorm

【讨论】:

  • 它确实显示为帖子,但我似乎仍然无法使用任何参数。 Isset 函数也返回 false。
  • 我了解您继续测试 GET 是否成功而 POST 不成功。我试图引导您完成的是隔离问题所在。下一步是检查发送的实际有效负载。在开发工具的“表单数据”下。它下面是什么?
  • 好的,现在您可以看到表单数据了。如果您安装了 Fiddler,请尝试从那里发布。如果这是浏览器和服务器之间的传输错误,现在将隔离。
  • 我有一个参数 nTesting: test 那里。这与我尝试发送的数据完全相同。
猜你喜欢
  • 1970-01-01
  • 2021-09-22
  • 2018-10-11
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 2016-12-08
  • 2017-01-23
相关资源
最近更新 更多