我想知道是否有人可以給我一些指針來幫助優化我的jQuery完整日曆代碼。我遇到的問題是,當我通過AJAX(> 25)獲取大量事件時,瀏覽器停滯並且無響應,通常會導致向用戶發送消息以中止腳本。我試圖避免這個錯誤,並且我想知道在我的函數中是否有一些東西可以改善加載時間。jQuery FullCalendar獲取事件優化
這裏是我運行功能的副本:
//Load the Business Unit Calendar Events
function ajaxBUEvents(start, end){
//Loop through the selected checked calendars
$(selectBUCalendars()).each(function(i, cal){
$.ajax({
type: 'POST',
data: {'startDate': start, 'endDate': end, 'buCals[]': cal},
url: '<?= site_url('AJAX/calendar_ajax/get_cal_events'); ?>',
dataType: 'json',
async: false,
beforeSend: function(){
$('#loading-dialog').dialog({minHeight: 100, width: 250}).dialog('open');
$('#loading-dialog p').text('Loading '+cal+' Calendar Events');
},
success: function(calevents){
$.each(calevents, function(i, calevent){
$('#calendar').fullCalendar('renderEvent', calevent, true);
});
}
});
});
$('#loading-dialog').dialog('close');
}
這裏是返回的JSON的樣本,這僅僅是一個事件。有時可能會有50個以上的活動返回:
[{"id":4377,"title":"BWR - Lighting Affiliates Dinner - Actualized","start":1259874000,"end":1259888400,"className":"BWR Actualized","allDay":false,"editable":false}]
感謝您的幫助!
OMG,這非常有意義!我完全忽略了這個功能,並且我不知道renderEvent每次都會重寫日曆。這太好了,我等不及明天在工作中試試這個。 非常感謝您的演示頁面和解釋! – whobutsb 2009-12-18 04:23:22
順便說一句JSBIN很甜!我迫不及待想要多用一些。 – whobutsb 2009-12-18 04:28:21
所以我剛剛實現了addEventSource,它絕對提高了日曆的性能。我現在遇到的唯一問題是它爲每個返回的事件添加了一個重複的事件。所以如果返回3個事件,那麼在屏幕上有6個事件。 – whobutsb 2009-12-18 14:39:27