如何解码通过php文件中的jquery ajax方法发送的json对象?

时间:2013-01-13 11:32:49

标签: php jquery json

这是我将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

2 个答案:

答案 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);
 }
});

我建议稍微阅读一下这些内容:

http://api.jquery.com/jQuery.ajax/

http://ee1.php.net/manual/en/function.json-decode.php