FullCalendar - 将事件保存在cookie中

时间:2012-07-26 15:22:14

标签: javascript fullcalendar jquery-cookie

我正在尝试使用外部拖动功能创建一个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,
             ...........

有没有人有机会之前做过这件事,或者不知道如何在不使用服务器的情况下保存事件?

2 个答案:

答案 0 :(得分:4)

我认为cookie插件不能存储复杂的对象数组。这就是我建议使用JSON.stringify的原因。但是,.fullCalendar('clientEvents')返回的Object数组包含递归的Object引用 - 所以即使JSON.stringify也无法成功转换它。

看看这个小提琴: http://jsfiddle.net/100thGear/v6tSd/

我在将一个临时对象数组存储到cookie中之前创建了一个临时对象数组,然后JSON.stringifyJSON.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);