0

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

这是我的表格,里面有一些虚拟数据:

<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;

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

4

3 回答 3

0

无需解码 json,因为您的表单数据作为“POST”类型传递给 php 页面。所以只需按照以下方式操作。

$json = $_POST['json'];
print_r($json);
于 2013-10-05T05:45:42.007 回答
0

代替,

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'];
于 2013-10-05T05:46:14.117 回答
0

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

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

也许你想要:

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

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

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

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

于 2013-10-05T05:46:23.847 回答