我正在使用jQuery fullcalendar插件。在同一页面上,我有一个带有复选框的表单,用于过滤从服务器获取的事件数据。这个想法是我想将这些表格值传递到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()
函数中,我将表单序列化并将其转换为关联数组。
剩下的就是劫持表单提交。因此,如果单击"提交"按钮,我取消默认的帖子操作,然后致电
calendar.fullCalendar("refetchEvents");
但是,这不起作用,并且getFormAsObject()
根本没有被调用。我在做什么错?
问题是(似乎)FullCalendar仅读取data
对象一次。因此,即使我将其设置为函数,它也会第一次读取它,然后再读取。我不确定,但我认为这可能是基础ajax()
的工作方式?
因此,我将其更改为删除eventSources
,然后每次进行更新时读取新的。似乎很丑陋,但有效。
使用"动态数据参数"第二个选项在这里:https://fullcalendar.io/docs/events-json-feed
$('#calendar').fullCalendar({
events: {
url: '/myfeed.php',
data: function() { // a function that returns an object
return {
dynamic_value: Math.random()
};
}
}
});