【问题标题】:parseJSON working in one case and not in otherparseJSON 在一种情况下工作而不在其他情况下工作
【发布时间】:2015-03-28 10:47:45
【问题描述】:

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

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);
});

请帮忙!

【问题讨论】:

  • 我们可以有PHP 代码吗?
  • 我已添加 PHP 代码。
  • 抱歉各位浪费了你们的时间,错误出现在下一个 parseJSON 上,我正在调试这个。

标签: javascript php json


【解决方案1】:
<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>

【讨论】:

  • 此代码甚至不起作用。它应该是alert(obj[0].id);,因为obj 是一个数组而不是一个对象。
【解决方案2】:

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

var data = {};

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

这将防止类型错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2019-12-12
    相关资源
    最近更新 更多