首页 > 解决方案 > php 不回显 POST 数据

问题描述

我有以下 jQuery 脚本将表单数据发布到 php。我正在使用一个简单的 php 文件测试表单数据,以回显输入 post:datastring 的名字字段作为测试(我是使用 php 的新手,所以这就是我测试它的原因)。

<script type="text/javascript">
$("#btn_submit").on("click", function (event) {
    event.preventDefault();
    form_data = $('form').serialize()
    var datastring = JSON.stringify({form_data});
    console.log("Okay, I'm starting");
    console.log(form_data);
    console.log(datastring);
    return $.ajax({
        type: "POST",
        url: "echo_test.php",
        data: {post: datastring},
        success: function (responseText) {
            console.log(responseText);
        },
        error: function (error) {
            console.log("Okay, I failed" + error);
        }
    });
});

简单的php文件:

<?php
echo 'Hello ' . htmlspecialchars($_POST["firstname"]) . '!';
?>

以下是 Firefox 开发者控制台的回应:

Okay, I'm starting
email_field=mj%40abc.com&firstname=mary&lastname=jones&comments=no+comment%0D%0A
{"form_data":"email_field=mj%40abc.com&firstname=mary&lastname=jones&comments=no+comment%0D%0A"}

最后它回响:

Hello !

所以 Hello 部分和感叹号被回显,但不是 firstname 字段。我可以看到它发布到 php 文件的数据字符串确实包含 firstname=mary,因此该字段中有一个值。

为什么名字字段不回显?

标签: phpjquery

解决方案


您没有正确发布您的数据,试试这个:

$("#btn_submit").on("click", function (event) {
    event.preventDefault();
    form_data = $('form').serialize()
    console.log("Okay, I'm starting");
    console.log(form_data);
    return $.ajax({
        type: "POST",
        url: "echo_test.php",
        data: form_data,
        success: function (responseText) {
            console.log(responseText);
        },
        error: function (error) {
            console.log("Okay, I failed" + error);
        }
    });
});

推荐阅读