2010-01-06 4 views
0

Est-ce que quelqu'un d'autre a eu ce problème? Voici un peu de code:refetchEvents dans jquery fullCalendar ne fonctionne pas dans 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

Avez-vous déjà eu 'refetchEvents' pour travailler dans IE - Je n'ai pas – Reddirt

Répondre

0

Eh bien, bien sûr .... IE et sa mise en cache ... J'ai ajouté ce qui suit à la demande get pour la fonction des événements. Il ajoute un paramètre de date si l'URL GET change chaque appel au serveur:

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

Pour faire refetchEvents travailler dans IE essayez ceci:

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

Où placez-vous ce code? Est-ce dans '$ ('# calendar'). FullCalendar' ou au niveau document.ready? – Reddirt

0

J'ai aussi fait face au même problème dans IE 9 , comment je l'ai résolu était i apposé un horodatage au fichier source où les événements ont été récupérés si mon dossier était "myserver/get_calendar.php"

tout ce que je faisais était 'myserver/get_calendar.php?$timestamp' ce qui rend le navigateur sentir son nouveau fichier à chaque fois qu'il essaie de re chercher la événement donc il envoie réellement req uest à cette page au lieu de l'utiliser du cache du navigateur

désolé pour mon anglais, Espérons que cela satisfasse la réponse !!! :)