javascript - 语法错误 : JSON Parse error: Unexpected identifier "object"

标签 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 字符串:

{"amount":"350","fee":"0","total":"350"}

JS (jquery) 代码:

$.getJSON("process.php?amount="+amount, function(data,status) {
   var obj = $.parseJSON(data);
   alert (obj.amount);
});

我收到错误:

SyntaxError: JSON Parse error: Unexpected identifier "object"

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

var obj = $.parseJSON('{"amount":"350","fee":"0","total":"350"}');

我看到警报 = 350。所以,它运行良好。

我试着做类似的东西:

var jsonreply = "'"+data+"'";
var obj = $.parseJSON(jsonreply);

但收到以下错误:

SyntaxError: JSON Parse error: Single quotes (') are not allowed in 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
));

如果我自己这么说会更好一些。

关于javascript - 语法错误 : JSON Parse error: Unexpected identifier "object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19625960/

相关文章:

php - Netbeans 配色方案

php - 如何配置和传输 MySQL(使用登录凭据)从 XAMPP 本地网络服务器到基于 Hostgator/Linux 的托管服务器?

php - "latin1"DB 的 Laravel 编码问题

javascript - Firefox 中的光标位置问题

javascript - HTML 和 JSON 之间交互的脚本帮助

javascript - 获取对象内所有数组的二维数组

javascript - 切换可见性(从 2 个 DIV 开始;如果 1 个 DIV 可见,则另一个不可见,反之亦然)

javascript - jQuery前5行代码的含义

javascript - JavaScript 中更高效的选项对象

javascript - dojo.data.ItemFileReadStore.fetch() onComplete 处理程序无法访问全局变量?