2

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

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

4

2 回答 2

4

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

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

我创建了一个临时对象数组,然后将其存储在 cookie 中,然后JSON.stringify完美JSON.parse运行。

让我知道这是否有帮助。

于 2012-07-26T16:33:38.677 回答
0

在 FullCalendar v1 中,如果您要远程加载数据,clientEvents 的内容包括每个事件的称为“源”的键-对象对。该对包含远程数据的 URL,如果您尝试将 clientEvents 字符串化以将其保存或发送到需要字符串而不是对象数组的位置,则会返回错误“将循环结构转换为 JSON”。我使用的解决方法是使用以下脚本删除“源”键和对象:

var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents');
for (var i = 0; i < eventsFromCalendar.length; i++) {
    delete eventsFromCalendar[i].source
    }
var jstrng = JSON.stringify(eventsFromCalendar);
于 2014-12-09T04:26:16.543 回答