2010-01-06 11 views
0

У кого-нибудь еще была эта проблема? Вот код:refetchEvents в jquery 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

ответ

0

Ну, конечно .... IE и его кэширование ... Я добавил следующее к запросу get для функции событий. Он добавляет параметр даты, поэтому GET 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

0

Я также столкнулся с той же проблемой в IE 9 , как я решил, что это я приложил метку времени к исходному файлу, из которого были принес события, так что если мой файл был "myserver/get_calendar.php"

все я сделал 'myserver/get_calendar.php?$timestamp' это делает браузер чувствовать его новый файл каждый раз, когда он пытается повторно принести , поэтому он фактически отправляет req uest на эту страницу, а не использовать ее из кеша браузера

извините за мой английский, Надеюсь, что это удовлетворит ответ !!! :)