Javascript SyntaxError:JSON解析错误:意外标识符“;“对象”;

Javascript SyntaxError:JSON解析错误:意外标识符“;“对象”;,javascript,php,jquery,json,Javascript,Php,Jquery,Json,请帮我了解出了什么问题。 我想将JSON应答解析为对象 PHP process.PHP代码: <?php $return = array(); array_push($return['amount']="$amount"); array_push($return['fee']="$fee"); array_push($return['total']="$total"); echo json_encode($return); ?

请帮我了解出了什么问题。 我想将JSON应答解析为对象

PHP process.PHP代码:

<?php
    $return = array();
        array_push($return['amount']="$amount");
        array_push($return['fee']="$fee");
        array_push($return['total']="$total");
    echo json_encode($return);
?>
JS(jquery)代码:

我收到错误消息:

SyntaxError:JSON分析错误:意外标识符“object”

但是!当我尝试插入结果数据(但插入“左/右引号”)时:

我看到警报=350。所以,它工作得很好

我试着做这样的事情:

var jsonreply = "'"+data+"'";
var obj = $.parseJSON(jsonreply);
但收到以下错误:

SyntaxError:JSON分析错误:中不允许使用单引号(') JSON


您的错误似乎就在这里:

var jsonreply = "'"+data+"'";
试着用“\”来逃避那些“错误”。 像


getJSON
为您解析JSON-调用
$。parseJSON
将对象转换为字符串
[object object]
,然后尝试解析该字符串,并给出一个错误。只需省略
$.parseJSON
调用,直接使用
数据


此外,我应该注意到对
array\u push
的调用是奇怪的,没有必要的。通常需要一个数组和一个值来推送它,但是(例如)在第一行中,您将
$return['amount']
设置为
“$amount”
,然后将
$return['amount']
传递给
数组推送,这充其量没有任何作用,最坏的情况下可能会给您一个警告或错误。如果你这样做,你会得到完全相同的行为:

$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); 
});

另外,为什么在PHP脚本中使用array_push?如果您想向数组中添加值,可以更轻松地这样做:
$return['amount']=$amount
@mazinsights:你的评论最好是针对我自己的问题,因为我不是第一个写代码的人!不过,这是一个很好的建议,所以我在我的答案中添加了这一点(实际上还有一点)。实际上,我使用了数组,但当我将一个数组推到另一个数组时,我收到的json结果并不好。类似于[“0”、{“key0”:“value”、“key1”:“value”}、{“key0”:“value”}]@icktoofay:没错!非常感谢你!当jQuery ajax方法中接收的数据类型是json时,您不需要在响应时使用
$。parseJSON
,它已经在内部进行了转换。要证明这一点,请尝试在成功回调中的
console.log($.type(data))
不是双引号中的特殊字符;反斜杠没用。也许您的意思是
“\\'”
,但您仍然在生成无效的JSON。
$return['amount']="$amount";
$return['fee']="$fee";
$return['total']="$total";
$return['amount']=$amount;
$return['fee']=$fee;
$return['total']=$total;
echo json_encode(array(
    'amount' => $amount,
    'fee' => $fee,
    'total' => $total
));
$.getJSON("process.php?amount="+amount, function(data,status) {
 alert (data.amount); 
});