【问题标题】:JSON error : SyntaxError: JSON.parse: unexpected character at line 2 column 1 of the JSON dataJSON 错误:SyntaxError:JSON.parse:JSON 数据第 2 行第 1 列的意外字符
【发布时间】:2014-07-16 20:44:57
【问题描述】:

这里的错误是什么:

.done(function(data) {
                var json = JSON.parse( data );
                if(json['status'] === "success"){
                    //some processing
                }
                else {
                    alert( "error 2" );
                }
            })

我收到错误消息:var json JSON.parse('('+data+')')

数据从 php 脚本返回:

/*...............*/
$sql->execute();
$i = 0;
while($result = $sql->fetch(PDO::FETCH_ASSOC){
    $response["affiliates"][i]["affiliate_name"] = $result["coupon_name"];
    $response["affiliates"][i]["affiliate_id"] = $result["coupon_id"];
    $i++;
}
$response["status"] = "success";
echo json_encode($response); 

【问题讨论】:

  • 很可能数据不是一些 JSON...
  • 为什么要在它周围加上()?不是{}?

标签: javascript php jquery json


【解决方案1】:

查看 JSON 的规范(此处易于理解的版本:http://json.org/)。没有任何地方说括号是有效的。 ({"foo": true}),例如永远不会解析。它可能是evaled,因为它是有效的 javascript,但 javascript 不是 JSON。

【讨论】:

  • 我仍然得到:SyntaxError: JSON.parse: unexpected character at line 2 column 1 of the JSON data
  • 然后尝试控制台。注销数据。看看它长什么样。数据是否符合规范?
  • data 是使用 json_encode($myarray) 编码为 json 的 php 数组
  • 这显然不是全部,否则您不会收到错误消息。我可以阅读您编写的代码。服务器响应是什么。完整的服务器响应。如果你使用 jQuery,你确定 jQuery 不会为你自动转换数据吗?
【解决方案2】:

因为错了。

“(1)”(例如)不是有效的 JSON 字符串。你为什么要粘贴这些括号?

【讨论】:

  • 我把它们取下来了,但仍然得到:SyntaxError: JSON.parse: unexpected character at line 2 column 1 of the JSON data
  • 好吧,至少你进步了一点。直接在浏览器中打开 URL,看看它是什么样子的。
【解决方案3】:

JSON 格式仅使用花括号和方括号。不应附加括号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2016-11-19
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多