我使用的是FullCalendar jQuery插件:http://arshaw.com/fullcalendar/
我也在使用您可以将外部事件拖到日历上的示例:http://arshaw.com/js/fullcalendar-1.5.2/demos/external-dragging.html
现在,我有一个事件点击功能,如下所示:
eventClick: function(event) {
$.ajax({
type: "POST",
url: "ajax-schedule.php",
data: 'id=' + event.id + '&start=' + event.start + '&end=' + event.end,
success: function(data){
alert('done!');
}
});
}
这会发布到文件“ajax-schedule.php”,其中数据被插入到mysql数据库中。
我想创建一个链接,点击后会获取所有新的/已更改的事件并发布如上所示的数据,而不是逐个发布。
类似的东西:
<a href="#" onclick="updateSchedule();">Update Schedule</a>
然后“updateSchedule”函数将发布所有数据。
看起来该解决方案可能涉及“clientEvents”方法:http://arshaw.com/fullcalendar/docs/event_data/clientEvents/ ......但我有点迷失在这里。
关于如何做到这一点的任何想法?
答案 0 :(得分:4)
您可以创建一个数组来存储所有事件:
var arrayOfEvents = [];
$('#calendar').fullCalendar({
...
drop: function(date) {
...
// retrieve the dropped element's stored Event Object
var originalEventObject = $(this).data('eventObject');
// we need to copy it, so that multiple events don't have a reference to the same object
var copiedEventObject = $.extend({}, originalEventObject);
// Push the event into the array
arrayOfEvents.push(copiedEventObject);
...
},
...
)};
function updateSchedule()
{
var data = "numOfEvents=" + arrayOfEvents.length;
// You can get all events out of the array here
for (var i = 0 ; i < arrayOfEvents.length ; i++) {
var event = arrayOfEvents[i];
data += "&id" + i + "=" + event.id
+ "&start" + i + "=" + event.start
+ "&end" + i + "=" + event.end;
}
// Make your ajax post here
$.ajax({
type: "POST",
url: "ajax-schedule.php",
data: data,
success: function(response){
alert('done!');
}
});
}
所以在服务器端,你的代码可以得到“numOfEvents”,只需运行一个从0到numOfEvents的for循环来获取所有事件。
答案 1 :(得分:0)
这是我计划在将来调整项目性能时实施的内容。我的总体想法是这样的:
希望你不会迷路并抓住我的漂移。这只是我对有用功能的想法,但我今年看不到自己在做什么,取决于学校/工作。它实际上并不难,至少不是我想象的那样,所以在我开始之前可能会有其他人会这样做:)