请帮助我了解出了什么问题。我想将 JSON 回复解析为对象。
PHP进程.php代码:
<?php
$return = array();
array_push($return['amount']="$amount");
array_push($return['fee']="$fee");
array_push($return['total']="$total");
echo json_encode($return);
?>
返回 JSON 字符串:
{"amount":"350","fee":"0","total":"350"}
JS(jquery)代码:
$.getJSON("process.php?amount="+amount, function(data,status) {
var obj = $.parseJSON(data);
alert (obj.amount);
});
我收到错误:
语法错误:JSON 分析错误:意外的标识符"对象"
但!当我尝试插入结果而不是数据(但向左/向右插入引号)时:
var obj = $.parseJSON('{"amount":"350","fee":"0","total":"350"}');
我看到警报 = 350。所以,它工作得很好。
我尝试制作这样的东西:
var jsonreply = "'"+data+"'";
var obj = $.parseJSON(jsonreply);
但收到以下错误:
语法错误:JSON 分析错误:中不允许使用单引号 (') 杰伦
getJSON
为您解析JSON——调用$.parseJSON
会将对象转换为字符串[object Object]
,然后尝试解析它,从而给您一个错误。只需省略$.parseJSON
调用并直接使用data
即可。
此外,我应该指出,打电话给array_push
是奇怪和不必要的。 array_push
通常需要一个数组和一个值来推送到它,但是(例如)在第一行中,您将$return['amount']
设置为 "$amount"
,然后将$return['amount']
传递给 array_push
,这充其量什么都不做,最坏的情况可能会给你一个警告或错误。如果这样做,您将获得完全相同的行为:
$return['amount']="$amount";
$return['fee']="$fee";
$return['total']="$total";
然后你可能还会意识到,比如说,"$amount"
周围的引号是不必要的,你实际上可以这样做:
$return['amount']=$amount;
$return['fee']=$fee;
$return['total']=$total;
最后,您实际上可以使用一些特殊的array
语法非常轻松地压缩所有五行:
echo json_encode(array(
'amount' => $amount,
'fee' => $fee,
'total' => $total
));
如果我自己这么说,那就更好了。
实际上你不需要解析它。 您可以直接访问它
$.getJSON("process.php?amount="+amount, function(data,status) {
alert (data.amount);
});
似乎你的错误在这里:
var jsonreply = "'"+data+"'";
尝试用"''"转义那些 '。喜欢
var jsonreply = "''"+data+"''";