Json 对象不会在 php 页面上回显


Json object doesn't echo on php page

我想我正在接近这一点,但由于某种原因,json 数据在到达 php 页面时没有打印出来。

这是我的表格,其中包含一些虚拟数据:

<form id="add_form" action="javascript:void(0);">
    <fieldset>
        <input type="text" value="5" name="dogs" id="dogs" />
        <input type="text" value="10" name="cats" id="cats" />
    </fieldset>
</form>

以下是相关函数(从按钮运行,上面未显示):

function add()
{
    $.ajax({
    type: 'POST',
    cache: false,
    url: 'add.php',
    data: { json: $('#add_form').serialize() },
    success: success
    });
}

最后是我似乎无法工作的 php:

$json_object = json_decode($_POST['json']);
echo $json_object;

我真正追求的是能够获取表单中每个元素的值(无论有多少表单元素)。与往常一样,感谢您愿意提供的任何建议。

而不是,

function add()
{
    $.ajax({
    type: 'POST',
    cache: false,
    url: 'add.php',
    data: { json: $('#add_form').serialize() },
    success: success
    });
}

你必须使用,

function add()
{
    var data = $('#add_form').serialize();
    $.ajax({
    type: 'POST',
    cache: false,
    url: 'add.php',
    data: data,
    success: success
    });
}

然后访问类似,

$_POST['dogs'];
不需要

解码 json,因为您的表单数据作为"POST"类型传递给 PHP 页面。 所以只需执行以下操作。

$json = $_POST['json'];
print_r($json);
如果要

发送JSON,必须先创建JSON。 .serialize不返回 JSON,它会返回一个查询字符串,您可以在文档中阅读:

.serialize() 方法以标准 URL 编码的表示法创建文本字符串。它可以作用于选择了单个表单控件(如 <input><textarea><select> 的 jQuery 对象。

也许你想要:

data: { json: JSON.stringify($('#add_form').serializeArray()) },

但这似乎过于复杂。只需使用

data: $('#add_form').serialize(),

并通过 $_POST['form_field_1'] 等访问 PHP 端的数据。