一尘不染

解析json错误:SyntaxError:JSON.parse:JSON数据第1行第2列的意外字符

json

从php将json解析为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上找到的解决方案,但仍然无法解决此问题

请有人帮忙

谢谢


阅读 1105

收藏
2020-07-27

共1个答案

一尘不染

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

2020-07-27