有一个数组
`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 =
答案 0 :(得分: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));
答案 1 :(得分:2)
看起来你正在将json编码的字符串回显到你的javascript中。你可以这样做,只需将引号保留:
var options = <?= json_encode($array); ?>;
JSON是JavaScript Object Notation的首字母缩写。将其回送到JS脚本会产生有效的javascript数组和对象文字。根本不需要解析它。
答案 2 :(得分:1)
在你展示你的代码之前,我假设这就是你所做的:
var object = $.parseJSON(<?php echo json_encode($array)?>);
并且这不起作用,因为parseJSON
期望字符串作为参数。
所以解决方案将是:
var object = $.parseJSON('<?php echo json_encode($array)?>');
请注意,它被引号括起来。
答案 3 :(得分:0)
JSON.parse()期望参数为字符串。通过用“单引号”包围它来使你的JSON数据成为一个字符串(因为你已经在JSON中使用了“双引号”)
答案 4 :(得分:0)
done(function (jsonresponse) {
var obj = $.parseJSON(jsonresponse);
console.log(obj);
};