我想我正在接近这一点,但由于某种原因,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 端的数据。