2016-05-27 17 views
1

Ich habe meinen Code geschrieben, um Feiertage und dynamische Ereignisse im Vollkalender darzustellen. Aus Mein Code habe ich die Ereignisse über den 'eventAfterRender' für den ersten Ajax-Aufruf erhalten. Aber ich habe die Ereignisse für den zweiten Ajax-Aufruf nicht erhalten. kann mir jemand helfen in .. Das folgende mein Skript ist: -Vollkalender: 'eventAfterRender' funktioniert nicht richtig

$(document).ready(function() { 
$.ajax({ 
     url: "calendar/show_holidays", 
     type: 'POST', // Send post data 
     data: 'type=fetch', 
     async: true, 

     success: function(s){ 

      holidays =s; 
      // holidays = '['+s+']'; 

       $('#calendar').fullCalendar('addEventSource', JSON.parse(holidays)); 

       } 
    }); 
$.ajax({ 
     url: "calendar/show_events", 
     type: 'POST', // Send post data 
     data: 'type=fetch_events', 
     async: true, 

     success: function(s){ 

      dynamic_events =s; 
         //alert(dynamic_events); 
       $('#calendar').fullCalendar('addEventSource', JSON.parse(dynamic_events)); 

       } 
    });  
$('#calendar').fullCalendar({ 
eventAfterRender: function(event, element, view) { 
element.append(event.title); 
} 
}); 
<style> 
.event-full { 
color: #fff; 
vertical-align: middle !important; 
text-align: center; 
opacity: 1; 
} 

</style> 

Können Sie mir helfen, wie soll ich beide Feiertage und dynamische Ereignisse zum fullcalendar Seite bekommen ..

Antwort

3

Lösung

Dieser Code:

$('#calendar').fullCalendar({ 
eventAfterRender: function(event, element, view) { 
    element.append(event.title); 
    } 
}); 

initialisiert den vollständigen Kalender. Also, wenn deine Ajax-Aufrufe vor diesem Code enden (und das ist wahrscheinlich was passiert), so wirst du die Ressourcen hinzufügen, aber dann überschreibst du sie mit der Initialisierung. Wenn Sie also diesen Code vor den Ajax-Aufruf verschieben, wird es funktionieren.


Anregung

Sie den Code ordentlicheres in der Initialisierungsmethode direkt durch Einstellen der eventSources machen kann.

$('#calendar').fullCalendar({ 
    eventSources: [ 
    '/calendar/show_events', 
    '/calendar/show_holidays' 
    ], 
}); 

Und dann brauchen Sie diese nicht 2 Ajax-Aufrufe als separater Code.

Denken Sie daran,, wenn Sie es tun möchten, sollte der Rückgabewert dieser Funktionen Array von Ereignissen sein (und nicht json), und die Methoden sollten GET-Anfragen und nicht POST sein, wie es jetzt ist.

Hoffe diese Hilfe

+0

können Sie mir in einer Geige zeigen? – Keynes

+0

Ist es für Sicherheitsfragen vorzuziehen, POST als GET zu verwenden? – Keynes

+0

[Geige] (https://jsfiddle.net/877n39un/). Sie können das Beispiel sehen. Ich habe 2 Arrays erstellt und dann den eventSources übergeben. Sie müssen die 'eventSources: [firstSource, secondSource]' mit den 2 relevanten URLs ersetzen –