使用PHP发回json值时出现意外错误

时间:2013-09-10 02:33:14

标签: php jquery ajax

我使用Ajax将我的服务器端代码PHP中的一些数据发回给我的客户端,这就是它的完成方式

//server side
$json="{
"payout_history":"0",
"round_shares":"1816",
"workers":
   {
    "jbo.5970":
      {
        "alive":"1",
        "hashrate":"1253"
      },
    "jbo.5970cpu":
      {
        "alive":"1",
        "hashrate":"21"
      },
    "jbo.5970-2":
      {
        "alive":"1",
        "hashrate":"1062"
      }
  }
}";
echo json_encode($json);

我在firebug的响应页面中收到此错误,我无法弄清楚它是什么错误

    <br />
<b>Parse error</b>:  syntax error, unexpected 'payout_history' (T_STRING) in         
<b>C:\xampp\htdocs\exercise5json\display.php</b> on line <b>38</b><br />

3 个答案:

答案 0 :(得分:5)

您没有正确嵌套引号。您需要将JSON字符串括在单引号中,而不是双引号:

$json = '{"myTag":"myData"}';

或者更好 - 将数组创建为PHP数组,并使用json_encode()为您生成JSON。

答案 1 :(得分:2)

更简单的方法是将您的数据设为array并将其传递给json_encode(),例如:

$json = array(
    "payout_history" => 0,
    "round_shares"  => 1816
    ....
);
echo json_encode($json);

答案 2 :(得分:0)

您的代码中的问题存在于您使用引号设置$json字符串的方式。

查看有关使用引号的PHP文档: http://php.net/manual/en/language.types.string.php

// Outputs: Arnold once said: "I'll be back"
echo 'Arnold once said: "I\'ll be back"';

正如@Sudhir先前所说,最好有一个数组并输出JSON using the json_encode function correctly

$json = array(
    "payout_history" => 0,
    "round_shares"  => 1816
    // ....
);
header("Content-Type: application/json");
echo json_encode($json);