2010-10-18 7 views
0

J'utilise jQuery fullcalendar avec Grails. J'utilisais des événements (en tant que flux json) plus tôt et lorsque l'utilisateur cliquait sur prev/next ou changeait de vue, l'URL de flux json était appelée à chaque fois. Comme j'ai également besoin de vérifier la session de l'utilisateur, je suis passé des événements (en tant que flux json) aux événements (en tant que fonction) comme indiqué ci-dessous. Le problème est la première fois que cela fonctionne, mais la prochaine fois que la demande ajax n'est pas envoyée au serveur et IE est à partir du cache. Si j'efface le cache du navigateur, il le récupère du serveur.jQuery fullcalendar: événements (en tant que flux json) et événements (en tant que fonction) dans IE

Donc, le problème est, IE met en cache les objets d'événement. Puis-je savoir ce que je fais mal? Etrangement cela fonctionne amende dans Firefox et Chrome.

//events: calendarEventsURL    
     events: function(start, end, callback) { 
      $.ajax({ 
       url: calendarEventsURL, 
       data: { 
        start: Math.round(start.getTime()/1000), 
        end: Math.round(end.getTime()/1000) 
       }, 
       success: function(msg) { 
        if(msg == "no-session"){      
         $("#wait").html(invalidSessionMsg).fadeIn('fast',function(){ 
          $("#wait").fadeOut(2000,function(){ 
           window.location= "/" + $("#appName").val() + "/"; 
          });  
         });      
        } else { 
         var events = []; 
         for(var c = 0; c < msg.length; c++){ 
          events.push({ 
           id: msg[c].id,         
           title: msg[c].title, 
           allDay: false, 
           start: msg[c].start, 
           end: msg[c].end 
          }); 
         } 
         callback(events); 
        } 
       } , error: function(){         
         $("#wait").html(errorMsg).fadeIn('fast',function(){ 
        });  
        } 
      }); 
     } 

Répondre

5

Essayez définissant la propriété de cache false:

//events: calendarEventsURL    
     events: function(start, end, callback) { 
      $.ajax({ 
       cache: false, 
       url: calendarEventsURL, 
       data: { 
        start: Math.round(start.getTime()/1000), 
        end: Math.round(end.getTime()/1000) 
       }, 
       success: function(msg) { 
        if(msg == "no-session"){      
         $("#wait").html(invalidSessionMsg).fadeIn('fast',function(){ 
          $("#wait").fadeOut(2000,function(){ 
           window.location= "/" + $("#appName").val() + "/"; 
          });  
         });      
        } else { 
         var events = []; 
         for(var c = 0; c < msg.length; c++){ 
          events.push({ 
           id: msg[c].id,         
           title: msg[c].title, 
           allDay: false, 
           start: msg[c].start, 
           end: msg[c].end 
          }); 
         } 
         callback(events); 
        } 
       } , error: function(){         
         $("#wait").html(errorMsg).fadeIn('fast',function(){ 
        });  
        } 
      }); 
     } 
+0

Merci beaucoup! Cela résout !! Parfait! :) –

0

juste après un nombre aléatoire à votre demande en tant que paramètre Get.

comme ceci: url = yoururl?unique=45686541654 -> (numéro unique)

ainsi chaque demande est unique un

vous pouvez vérifier mon poste de réponse here pour un problème similaire/solution

+0

merci pour votre aide aussi. :) –

Questions connexes