1

我做了一个非常简单的表单,只是为了看看我在用 PHP 提交数据时是否做对了。它只包含三个单选按钮,没有别的。不对,我没有像我期望的那样在 $_POST 中得到值。

表格:

<form name='testform' action='test.php' method='post'>
    <input type='radio' name='testbutton' value='larry' />
    <input type='radio' name='testbutton' value='curly' />
    <input type='radio' name='testbutton' value='moe' />
    <input type='submit' value='Submit'>
</form>

脚本 test.php:

if($_POST['testbutton'] == 'larry') {
    echo "You picked Larry";
} elseif($_POST['testbutton'] == 'curly') {
    echo "You picked Curly";
} else {
    echo "You picked Moe";
}

代码没有返回错误,但无论我选择什么按钮,我总是得到 Moe,即使根本没有选择任何按钮。使用 var_dump($_POST) 什么都没有,一个空白的空间。无论我选择什么,使用 print_r($_POST) 都会给出 1。我在这里找不到我做错了什么。

顺便说一句,我知道这段代码不是最优的,但我只是在这里测试东西。

4

3 回答 3

3

您可能还有一些其他代码没有显示给我们,它为 $_POST 变量赋值,并覆盖它。

如果您创建一个全新的 php 文件,并且只输入您在此处发布的代码,它应该可以正常工作。

于 2012-06-10T23:40:58.283 回答
0

我知道这是一个旧帖子,但是在调试神秘问题时,有时另一个建议可能会帮助某人解决他们的“缺少 POST”数据之谜。

就我而言,我使用 ajax 提交表单。在 javascript 代码中:我将“type:”设置为“GET”,然后继续编写代码来处理服务器端 PHP 脚本中的“$_POST”数据。具有欺骗性的是,请求的视图(如在 Chrom Developer 工具中所见)具有正确的值,因此您确信这些值正在被传输。但是,在进一步检查时,您会看到响应标头显示“GET”。

肯定是愚蠢的错误。希望这有助于将其他人从类似的调试地狱中解救出来。

于 2017-08-07T17:39:50.287 回答
-1
  • 将“名称”属性添加到输入元素总是好的。
<input type="submit" name="MySubmit" value="Submit">
  • 不选择任何东西时,您总是会得到 Moe。假设您没有显示整个代码,我可以告诉您:
if(isset($_POST['MySubmit'])) {

    $selected = $_POST['testbutton'];

    switch($selected){

        'larry': echo "You picked Larry";

                 break;

        'curly': echo "You picked Curly";

                 break;

         default: "You picked Moe";

                  break;

    }

}

else {

    echo "Form submit failed";

}
于 2012-06-10T23:55:42.580 回答