0

有一个数组

`Array
(
    [0] => Array
        (
            [operative] => 2
            [start] =>  01:00:00
            [end] =>  13:00:00
            [color] => 543939
        )

    [1] => Array
        (
            [operative] => 3
            [start] =>  08:00:00
            [end] =>  09:00:00
            [color] => 52e612
        )

)

`

需要将其更改为 JSON,所以我使用 json_encode(),我得到一个字符串
[{"operative":"2","start":" 01:00:00","end":" 13:00:00","color":"543939"},{"operative":"3","start":" 08:00:00","end":" 09:00:00","color":"52e612"}]

但是当我通过函数 $.parseJSON() 或 JSON.parse() 将 JSON 用于 JavaScript 时,两者都没有给我定义。

好的,我已经这样使用了

options1 = '[{"operative":"2","start":" 01:00:00","end":" 13:00:00","color":"543939"},{"operative":"3","start":" 08:00:00","end":" 09:00:00","color":"52e612"}]'
options1 = $.parseJSON(options1);
alert($.param(options1));

但是警报显示我 undefined=&undefined=

4

5 回答 5

4

如果您使用 $.parseJSON() -function,可解析的数据应该是字符串:

var json = '[{"operative":"2","start":" 01:00:00","end":" 13:00:00","color":"543939"},{"operative":"3","start":" 08:00:00","end":" 09:00:00","color":"52e612"}]';

console.log($.parseJSON(json));
于 2013-08-09T08:14:42.893 回答
2

看起来您正在将该 json 编码字符串回显到您的 javascript 中。您可以这样做,只需留下引号:

var options = <?= json_encode($array); ?>;

JSON 是 JavaScript Object Notation 的缩写。将其回显到 JS 脚本中会产生有效的 javascript 数组和对象字面量。根本不需要解析它。

于 2013-08-09T08:27:02.543 回答
1

在你展示你的代码之前,我假设这就是你所做的:

var object = $.parseJSON(<?php echo json_encode($array)?>);

这不会起作用,因为parseJSON需要一个字符串作为参数。

所以解决方案是:

var object = $.parseJSON('<?php echo json_encode($array)?>');

请注意,它被引号包围。

于 2013-08-09T08:19:19.283 回答
0

JSON.parse() 期望参数是一个字符串。通过用“单引号”将您的 JSON 数据变成一个字符串(因为您已经在 J​​SON 中使用了“双引号”)

于 2013-08-09T08:17:42.107 回答
0

使用parseJSON()

done(function (jsonresponse) {
var obj = $.parseJSON(jsonresponse);        
console.log(obj);
};
于 2013-08-09T08:21:21.913 回答