0

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

现在我想使用这个发送到 php 页面的 json 数据。我该怎么做?我已经这样做了,但它返回null。

<?php
   echo json_decode('ans_json');
?>

我有一组 10 个问题需要回答。回答了 3 个问题,所以得到了以下结果。这就是我在控制台中得到的。

 [{"name":"answer_9","value":"a"},{"name":"answer_10","value":"a"}] quizzes.php:14

空值

4

2 回答 2

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"];
于 2013-01-13T11:51:55.490 回答
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 以反映以下内容:这会将 my_json 参数与您的 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

于 2013-01-13T11:36:44.047 回答