FullCalendar无法读取null

时间:2017-08-14 02:34:33

标签: jquery fullcalendar

我正在使用最新版本的FullCalendar(http://fullcalendar.io)。 FullCalendar显示绘制客户访问时间的日历。它在内部存储日历事件,以便更快地前进到各个月。它适用于当月,上个月,以及直到2017年2月为止,此时我在JavaScript控制台中收到以下错误消息:

Uncaught TypeError: Cannot read property '_id' of null
    at buildEventFromInput (fullcalendar.js:13527)
    at fullcalendar.js:12980
    at Object.success (fullcalendar.js:13110)
    at i (jquery-3.2.1.min.js:2)
    at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2)
    at A (jquery-3.2.1.min.js:4)
    at XMLHttpRequest.<anonymous> (jquery-3.2.1.min.js:4)

错误似乎在获取日期信息的AJAX函数之前触发,但为了确保我运行该月的查询,数据看起来很好。一旦错误触发,如果我回到我已经查看的其中一个月,我就不会再看到这些事件了。错误消息显然是以某种方式弄脏了内部数据存储,虽然JavaScript仍在运行,否则我将无法再切换几个月。

我希望熟悉FullCalendar的人在看到这个错误之前能指出正确的方向。该应用程序受登录保护并包含真实的客户端信息,因此构建一个用于测试目的的模型将非常复杂,所以我不必刻意这样做一两个小时 - 但是如果没有明显的答案我自己会咬紧牙关去做。

感谢任何帮助!

编辑:这是一个测试用例。

http://scripturemenu.com/test/index.html

错误消息与我上面报告的内容略有不同(它试图读取属性“hasTime”而不是undefined的属性“_id”) - 当我用真实客户端名称改为“CLIENT NAME”时发生这种情况和一个ID,但是当你遇到二月时它仍然会发生。

有趣的是,当我使用代码来使这个测试用例工作时,AJAX调用也在1月触发,即使在我通过2月之后,日历上也没有日期显示。

2 个答案:

答案 0 :(得分:1)

你的二月数据中有一个没有id的对象。你可以在这里看到它: http://scripturemenu.com/test/calendar-events-json.html?TechID=all&show=customer&start=2017-01-29&end=2017-03-05&_=1502766053928

enter image description here

这可能是你的js错误的原因

答案 1 :(得分:0)

存在一条无效事件数据。大多数事件看起来都是正确的,有ID,开始和结束时间,例如:

{"id":43969,"start":"2017-02-07","title":"CLIENT NAME 43969"}

但是有一个没有任何这些属性:

{"title":"CLIENT NAME "}

因此,fullCalendar不知道如何将其添加到日历中,因此崩溃。

将月视图更改为2月时检索到此数据,这触发了对

的AJAX请求
http://scripturemenu.com/test/calendar-events-json.html?TechID=all&show=customer&start=2017-01-29&end=2017-03-05&_=1502777909174

您需要更正源数据和/或将源数据转换为fullCalendar的JSON格式的代码。