5

我的代码

var json = xmlhttp.responseText; //ajax response from my php file
obj = JSON.parse(json);
alert(obj.result);

在我的 php 代码中

 $result = 'Hello';

 echo '{
        "result":"$result",
        "count":3
       }';

问题是:当我提醒时obj.result,它显示"$result",而不是显示Hello。我该如何解决这个问题?

4

5 回答 5

16

您的示例的基本问题$result是包含在单引号中。所以第一个解决方案是打开它,例如:

$result = 'Hello';
echo '{
    "result":"'.$result.'",
    "count":3
}';

但这仍然不是“足够好”,因为它总是可能$result包含一个"字符本身,导致例如 ,{"result":""","count":3}它仍然是无效的 json。$result解决方案是在将其插入 json 之前对其进行转义。

这实际上非常简单,使用json_encode()函数:

$result = 'Hello';
echo '{
    "result":'.json_encode($result).',
    "count":3
}';

或者,更好的是,我们可以让 PHP 自己完成整个 json 编码,方法是传入整个数组而不是仅仅$result

$result = 'Hello';
echo json_encode(array(
    'result' => $result,
    'count' => 3
));
于 2012-09-19T04:58:55.623 回答
6

您应该使用json_encode正确编码数据:

$data = array(
    "result" => $result,
    "count"  => 3
);
echo json_encode($data);
于 2012-09-19T04:58:28.413 回答
2

您在回声中使用单引号,因此没有发生字符串插值

使用json_encode()

$arr = array(
    "result" => $result,
    "count" => 3
);
echo json_encode($arr);

作为奖励,json_encode将正确编码您的响应!

于 2012-09-19T04:56:03.800 回答
0

尝试:

$result = 'Hello';
echo '{
   "result":"'.$result.'",
   "count":3
}';
于 2012-09-19T04:57:09.773 回答
0
$result = 'Hello';

$json_array=array(
  "result"=>$result,
  "count"=>3
)
echo json_encode($json_array);

就这样。

于 2012-09-19T05:01:07.510 回答