Javascript 指定Fullcalendar'的数据;事件源
我正在使用jQuery Fullcalendar插件。在同一页上,我有一个带有复选框的表单,用于过滤从服务器获取的事件数据。我的想法是将这些表单值传递到Javascript 指定Fullcalendar'的数据;事件源,javascript,ajax,jquery,fullcalendar,Javascript,Ajax,Jquery,Fullcalendar,我正在使用jQuery Fullcalendar插件。在同一页上,我有一个带有复选框的表单,用于过滤从服务器获取的事件数据。我的想法是将这些表单值传递到eventSources对象中,以便将它们与开始/结束时间戳一起传输到服务器 有这样一个示例eventSources对象: $('#calendar').fullCalendar({ eventSources: [ // your event source { url: '/myfeed',
eventSources
对象中,以便将它们与开始/结束时间戳一起传输到服务器
有这样一个示例eventSources
对象:
$('#calendar').fullCalendar({
eventSources: [
// your event source
{
url: '/myfeed',
type: 'POST',
data: {
custom_param1: 'something',
custom_param2: 'somethingelse'
},
}
// other sources...
]
});
我将其修改为:
eventSources: [
{
// ...as above
data: getFormAsObject(),
// as above...
}
我希望表单的值被传递到data
对象中。在getFormAsObject()
函数中,我序列化表单并将其转换为关联数组
剩下的就是劫持表单提交。因此,如果单击“提交”按钮,我将取消默认的POST操作,并调用
calendar.fullCalendar("refetchEvents");
但是,这不起作用,而且根本不会调用getFormAsObject()
。我做错了什么?问题是(似乎)Fullcalendar只读取数据
对象一次。所以它第一次读它,然后就不再读了,即使我将它设置为一个函数。我不确定,但我认为可能是底层的ajax()
调用如何工作
因此,我将其更改为删除事件源
,然后在每次更新时读取新的事件源。看起来很难看,但很有效。使用“动态数据参数”
此处的最后二个选项:
奇怪的是,该函数在页面加载时被调用一次(并且日历被初始化),但之后就不再调用了。我还尝试了
data:function(){return getFormAsObject();},
,但这不会触发它。在这里不容易遵循事件序列。首先解决控制台中是否抛出任何错误。此处的代码或完整序列描述不足,无法真正了解应用程序的工作方式。例如,如果你在页面加载时初始化插件…表单元素可能还没有被填充yetno一切都按照描述工作(我想!),插件确实工作;但它似乎忽略了数据
对象。我想我传错了。
$('#calendar').fullCalendar({
events: {
url: '/myfeed.php',
data: function() { // a function that returns an object
return {
dynamic_value: Math.random()
};
}
}
});