Javascript JSON.parse:意外的字符错误

时间:2013-06-08 18:54:30

标签: php javascript json

我想从php脚本中获取一个字符串,并将其解析为javascript数组。但得到错误:语法错误:JSON.parse:行的意外字符:JSON.parse(msg);

我搜索了很多,无法弄清楚我的问题在哪里,请帮我查一下。感谢。

PHP方面:

header("application/json; charset=utf-8");
$sum = array(1,2,3,4,5);
echo json_encode($sum);

Javascript:

$.ajax({
    type: "POST",
    url: "save.php",
    contentType: "application/json; charset=utf-8",
    data: price,
    success: function (msg) {
        var i = 0;
        console.log(msg);
        var sum = new Array();
        sum = JSON.parse(msg);
        $('input.hj').each(function () {
            if (sum[i] > 0) {
                $(this).val(sum[i]);
            }
            i++;
        });
    }
});

2 个答案:

答案 0 :(得分:4)

不要解析它:$.ajax为你解析它。只需使用赋予success回调的参数,这就是解析后的数组。

如果您的浏览器无法检测到它的JSON,请添加dataType参数。

另请注意,您无需自行管理i计数器:一个由each传递:

dataType: 'json',
success: function(sum){
    $('input.hj').each(function(i){
        if (sum[i] > 0) {
            $(this).val(sum[i]);
        }
    });
}

答案 1 :(得分:0)

没有必要解析它。此外,在您的 PHP 脚本中,您的header应为:

header("Content-type: application/json; charset=utf-8");

JS 中,如果price是一个字符串(或浮点数或整数),则无需将其作为json发送。为简化起见,您可能需要删除contentType: "application/json; charset=utf-8",