这是我将json数据发送到php文件的jquery ajax部分。
$(function () {
$('form').submit(function () {
var fields = $(this).serializeArray();
var ans_json = JSON.stringify(fields);
console.log(ans_json);
$.ajax({
url: "results.php",
type: "POST",
data: ans_json,
dataType: "json",
success: function (result) {
console.log(result);
}
});
return false;
});
});
现在我想用这个json数据发送到php页面。我怎么能这样做?我这样做了,但它返回null。
<?php
echo json_decode('ans_json');
?>
我有一组需要回答的10个问题。回答了3个问题,得到了以下结果。这就是我在我的控制台中得到的结果。
[{"name":"answer_9","value":"a"},{"name":"answer_10","value":"a"}] quizzes.php:14
null
答案 0 :(得分:2)
如果您正确编码参数,则无需在服务器端解码任何JSON字符串。
您可以使用.serialize()
为您执行表单序列化,并且已准备好发送。
$(function () {
$('form').submit(function () {
var serialized = $(this).serialize();
$.ajax({
url: "results.php",
type: "POST",
data: serialized,
...
});
return false;
});
});
您的参数将在$_POST
中可用,就像在任何正常的POST请求中一样。例如,
$ninth_answer = $_POST["answer_9"];
答案 1 :(得分:1)
您需要解码POST变量。目前,您只是解码一个甚至无效的JSON字符串。
<?php
$json_arr = json_decode($_POST['my_json'], true);
var_dump($json_arr);
echo "First name in json is:". $json_arr[0]['name'];
?>
并修改您的javascript以反映以下内容: 这会以您的json作为值发布my_json参数。这使PHP很容易使用$ _POST接收它。
$.ajax({
url: "results.php",
type: "POST",
data: {"my_json": ans_json},
dataType: "json",
success: function (result) {
console.log(result);
}
});
我建议稍微阅读一下这些内容: