我正在尝试使用外部拖动功能创建一个FullCalendar,您可以在cookie中保存添加到日历中的事件(我更倾向于将其保存在服务器上,但这不是一个选项)。我正在使用jquery cookie插件来简化它。
到目前为止我所拥有的是保存功能(我相信它正在运行):
function save() { var eventsFromCalendar = $('#calendar').fullCalendar( 'clientEvents'); $.cookie("DSCalendar", eventsFromCalendar, {expires: 1}); }
...但是当我下次打开它时,我无法将日历包括在内。我试过这样做,但它似乎根本不起作用:
$(document).ready(function() {
....
var savedEvents = $.cookie("DSCalendar");
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
events: savedEvents,
...........
有没有人有机会之前做过这件事,或者不知道如何在不使用服务器的情况下保存事件?
答案 0 :(得分:4)
我认为cookie插件不能存储复杂的对象数组。这就是我建议使用JSON.stringify
的原因。但是,.fullCalendar('clientEvents')
返回的Object数组包含递归的Object引用 - 所以即使JSON.stringify
也无法成功转换它。
看看这个小提琴: http://jsfiddle.net/100thGear/v6tSd/
我在将一个临时对象数组存储到cookie中之前创建了一个临时对象数组,然后JSON.stringify
和JSON.parse
完美地工作。
如果有帮助,请告诉我。
答案 1 :(得分:0)
在FullCalendar v1中,clientEvents的内容包括一个名为" source"对于每个事件,如果要远程加载数据。该对具有其中的远程数据的URL,其返回错误"将循环结构转换为JSON"如果您尝试对clientEvents进行字符串化以便将其保存或发送到需要字符串的位置,而不是对象数组。我使用的工作是删除"来源"使用以下脚本的键和对象:
var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents');
for (var i = 0; i < eventsFromCalendar.length; i++) {
delete eventsFromCalendar[i].source
}
var jstrng = JSON.stringify(eventsFromCalendar);