解析 json 错误:SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

Posted

技术标签:

【中文标题】解析 json 错误:SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data【英文标题】:parsing json error : SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data 【发布时间】:2015-03-05 10:34:36 【问题描述】:

我在将 json 从 php 解析为 javascript 时遇到问题

这是我的示例代码:

//function
MethodAjax = function (wsFile, param) 
    return $.ajax(
        type: "POST",
        dataType: "json",
        url: '../proses/' + wsFile + ".proses.php",
        data: 'param='+param,
        error: function (msg) 
            return;
        ,
    );
;

//call function 
$(document).ready(function() 

    $('#getproduk').click(function()
        var param = 
        ProdukId : '1',
        ProdukName : 'test'
    ;

    CallMethodWithAjax('try', JSON.stringify(param)).done(function(data)
        $data =  JSON && JSON.parse(data) || $.parseJSON(data); 
    );
);

//Simple Php code
<?php
    $data = $_POST['param'];

    $data = (json_decode($data));

    $data1['name'] = $data->ProdukName;
    $data1['id'] = $data->ProdukId;
    $data1['test'] = 'test';


    echo json_encode($data1);
?>

//post, response and error at console
response : "name":"test","id":"1","test":"test"
post : param    "ProdukId":"1","ProdukName":"test"
error : SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON  data

如何解决这个问题,我已经尝试了我在 SO 和 google 找到的解决方案,但仍然无法解决这个问题

请人帮忙

谢谢

【问题讨论】:

【参考方案1】:

如果响应是 JSON,jQuery 的 $.ajax() 函数将产生一个 JavaScript 对象,所以我相信您看到的错误是尝试解析 JavaScript 对象而不是您期望的字符串的结果。在您提供给done 函数的回调中,检查data,您会发现它是一个对象,不需要JSON.parse 结果。

【讨论】:

以上是关于解析 json 错误:SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data的主要内容,如果未能解决你的问题,请参考以下文章

微信微信小程序 微信开发工具中新创建的json文件,编译报错VM1781:2 pages/module/module.json 文件解析错误 SyntaxError: Unexpected e(代

jQuery解析JSON出现SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data(示例代码

使用 Ext 解析简单 JSON 给出 SyntaxError: Unexpected token ILLEGAL

Json Web 令牌 - jose4j - SyntaxError:JSON 中位置 0 的意外令牌 e

VM603:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1

SyntaxError:JSON.parse (<anonymous>) 处的 JSON 输入意外结束