parseJSON在一种情况下有效,而在另一种情况中无效

parseJSON working in one case and not in other

本文关键字:另一种 无效 有效 情况 情况下 一种 parseJSON      更新时间:2023-09-26

我通过将数组传递到PHP的json_enocode()中,使用ajay从服务器获取一些JSON数据,它返回了一个有效的JSON(在许多在线JSON调试器上检查过)。但是JS的$.parseJSON()不接受它。Parser对一组数据抛出错误(如下),而对另一组数据则正常工作。

CONSOLE>SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外字符

我试着一个接一个地删除数组中的所有元素,但它甚至对单个元素都不起作用。以下是数据集:

这是有效的:

[{"id":"54a3b103877c0","act_name":"ABC","profile_image":"['"551d'"]"}]

虽然这不是:

[{"id":"2","user_id":"53b595a","review_for_id":"54f25","review_for_type":"city",
"r_title":"asfasas asd as","r_body":"a sdasda sdas dasdas das d","r_rating":"3",
"other_info":"","added":"2015-03-28 15:47:20","modified":"2015-03-28 15:47:20",
"f_name":"ABC","l_name":"XYZ","lives_in":"ABC"}]

PHP代码:

阵列:

Array
(
[0] => Array
    (
        [id] => 2
        [user_id] => 53b595a
        [review_for_id] => 54f25
        [review_for_type] => city
        [r_title] => asfasas asd as
        [r_body] => a sdasda sdas dasdas das d
        [r_rating] => 3
        [other_info] => 
        [added] => 2015-03-28 15:47:20
        [modified] => 2015-03-28 15:47:20
        [f_name] => ABC
        [l_name] => XYZ
        [lives_in] => ABC
    )
)

PHP-上面的数组是$d

json_encode($d, JSON_HEX_TAG | JSON_HEX_QUOT)

以下是Ajax的Jquery:

 $.get(url, '', function(d){
    var data = {};
    if(d != ''){
        data = $.parseJSON(d);
    }
    var acc = {};
    acc[sc_id] = data;
    console.log(acc);
});

请帮忙!

<script>
    var str = '[{"id":"2","user_id":"53b595a","review_for_id":"54f25","review_for_type":"city","r_title":"asfasas asd as","r_body":"a sdasda sdas dasdas das d","r_rating":"3","other_info":"","added":"2015-03-28 15:47:20","modified":"2015-03-28 15:47:20","f_name":"ABC","l_name":"XYZ","lives_in":"ABC"}]';
    var obj = $.parseJSON(str);
    alert(obj.id);
</script>

有时从PHP可以使用JSON_encode函数或带有JSON格式和application/JSON头的纯文本将JSON数据发送到AJAX调用。因此,最好检查AJAX响应是否已经是一个对象。

var data = {};
if (typeof response !== 'object') {
    data = $.parseJSON(response);
} else {
    data = response;
}

这将防止类型错误。