【发布时间】:2019-09-06 07:31:03
【问题描述】:
总结
我已经设置了 fullcalendar,我正在尝试使用 JSON 事件源在其中显示数据,如他们的文档 here 中所述。
我不断收到以下失败消息Failure parsing JSON。
我尝试过的事情
这是将触发失败消息[{"title":"Lorem Ipsum","start":"2019-04-01","end":"2019-04-02"},{"title":"The Test","start":"2018-09-01","end":"2018-09-02"}]的JSON
我使用的是全日历版本 4.0.2。
我已经验证了我的 PHP 代码在 linter 中返回的 json。
我在 json 响应中添加了一个 Content-Type: application/json 标头。
我尝试使用 eventDataTransform 钩子返回在 fullcalendar 文档 here 中找到的一些示例 JSON(请参阅编辑历史记录中的代码)
~~奇怪的是,当我将上面的 JSON 直接放在我的 javascript 中的 events 选项中时,它确实有效。~~ 编辑:正如 Jaromanda X 和 Quentin 所指出的,这是一个 javascript 数组而不是 JSON .
代码
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [ 'dayGrid' ],
defaultView: 'dayGridMonth',
locale: 'nl',
events: '/fullcalendar/json.php'
});
我希望我的 json 可以被解析,因为响应与我直接提供给 events 选项的响应相同
其他信息
json.php 文件的内容
<?php
header('Content-Type: application/json');
echo json_encode([
[
'title' => 'Lorem Ipsum',
'start' => '2019-04-01',
'end' => '2018-04-02'
],
[
'title' => 'The Test',
'start' => '2018-09-01',
'end' => '2018-09-02'
]
]);exit;
我尝试将方法更改为 GET,但没有帮助。
我附上了我在检查员JSON response in inspector的网络选项卡中看到的响应的屏幕截图
【问题讨论】:
-
events: [{"title":"Lor .... }]不是 JSON,但events: '[{"title":"Lorem ... 9-02"}]'是 -
"下一行的 JSON" — 这是一个 JavaScript 数组,不是 JSON。 benalman.com/news/2010/03/theres-no-such-thing-as-a-json
-
我怀疑
method: 'POST',应该是method: 'GET',但这只是一个猜测。您的“fullcalendar/json.php”端点是否需要 POST 请求? -
@JaromandaX 感谢您的评论。这可以解释为什么解析“json”没有失败,因为它不是。
-
我注意到在
eventDataTransform处理函数中,您正在返回一个包含一个对象的数组。我很确定您只需要返回对象(不包含在数组中)。
标签: javascript json fullcalendar fullcalendar-4