2010-01-06 37 views
0

有没有其他人有这个问题?这里有一些代码:jQuery中的refetchEvents fullCalendar在IE中不起作用

$(document).ready(function() { 
    $('#calendar').fullCalendar({ 
     editable: true, 
     disableDragging: false, 
     height: 400, 
     weekMode: 'variable', 
     defaultView: 'agendaDay', 
     allDaySlot: false, 
     weekends: false, 
     minTime: 7, 
     maxTime: 22, 
     slotMinutes: 15, 
     header: { 
      left: 'prev,next today', 
      center: 'title', 
      right: 'month,agendaWeek,agendaDay' 
     }, 
     eventSources: [ 
     //US HOLIDAYS 
     //TODO: Add entries for Alaska Day and Seward Day 
       $.fullCalendar.gcalFeed('http://www.google.com/calendar/feeds/usa__en%40holiday.calendar.google.com/public/basic') 
     ], 
     events: function(start, end, callback) { 

      $.getJSON('<%= ResolveUrl("~/TimeSheet/fetchCalEvents") %>', 
      { 
       start: $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss"), 
       end: $.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss") 
      }, 
      function(data) { 
       if (data != null) { 

        var events = []; 
        $.each(data, function(i, data) { 

         //allDay = start.indexOf('T') == -1; 

         //if (allDay) { 
          //$.fullCalendar.addDays(end, -1); // make inclusive 
         //} 
         events.push({ 
          id: data.ID, 
          title: data.TITLE, 
          start: new Date(parseInt(data.START.replace("/Date(", "").replace(")/", ""), 10)), 
          end: new Date(parseInt(data.END.replace("/Date(", "").replace(")/", ""), 10)), 
          allDay: false, 
          //location: entry['gd$where'][0]['valueString'], 
          //description: entry['content']['$t'], 
          //className: options.classN6ame, 
          editable: true 
         }); 


        }); 

        callback(events); 

       } //END if (data != null) 


      }); 

     },//........ lots more code here. 


//MY FORM HEADER USED WHEN SUBMITTING A NEW CALENDAR ITEM TO THE DB:  
<% using (Ajax.BeginForm("newTimeEntry", "TimeSheet", new AjaxOptions() { UpdateTargetId = "newTimeEntry", OnComplete="timeSubmitComplete", OnSuccess = "enableTimePickers", InsertionMode = InsertionMode.Replace }, new { id = "TimeEntry" })) 



//########################################## 
//CALLED AFTER SUCCESSFUL TIME ENTRY SUBMISSION 
//RELOADS THE CALENDAR EVENTS 
function timeSubmitComplete() { 
    $('#calendar').fullCalendar('refetchEvents'); 
} 
+0

你有没有'refetchEvents'在IE中工作 - 我还没有 – Reddirt 2013-05-22 14:27:40

回答

0

那么,当然.... IE浏览器和它的缓存...我添加以下内容到获取请求的事件功能。它增加了一个日期参数,因此获取URL每个调用更改服务器:

events: function(start, end, callback) { 

      $.getJSON('<%= ResolveUrl("~/TimeSheet/fetchCalEvents") %>', 
      { 
       start: $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss"), 
       end: $.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss"), 
       noCache: new Date() 
      }, 
1

为了refetchEvents在IE浏览器试试这个:

setTimeout(function() { $('#calendar').fullCalendar('refetchEvents');},0); 
+0

你在哪里放置这段代码?它是在$('#calendar')。fullCalendar'还是在document.ready级别? – Reddirt 2013-05-22 13:58:24

0

我也是在IE 9所面临的同样的问题,我怎么解决的,是我附加一个时间戳从那里事件获取源文件,所以如果我的文件是"myserver/get_calendar.php"

我所做的就是'myserver/get_calendar.php?$timestamp'这使得浏览器感觉到它的新文件,每次尝试重新获取时间事件,所以它实际上发送req使用该页面而不是从浏览器缓存中使用它

对不起,我的英语, 希望这能满足答案! :)