Статични източници на събития в пълния календар

Използвам fullcalendar eventSources, за да изтегля json данни за събития от сървъра. Имам променлива sheet_id, която се променя и функцията selected_sheet_id() ще върне съответния избран лист. Проблемът е, че когато извикам $("#calendar").fullCalendar('refetchEvents') за връщане на събития, sheet_id (по този начин всички събития) винаги са едни и същи. Това означава, че fullcalendar не се опреснява с текущия sheet_id преди извличане на събития. Как да задействам eventSources за „прекомпилиране“, така че да изтегли правилния sheet_id от функцията, преди да изпълни ajax повикване.

eventSources: [{
    url: '/event/get_events',
    type: 'GET',
    data: {
        sheet_id: selected_sheet_id()
    },
    error: function() {
        alert('there was an error while fetching events!');
    }     
}]

person user2434674    schedule 19.07.2013    source източник


Отговори (1)


Първо опитайте това с async:false за синхронизиращо повикване:

eventSources: [
          {
           url: '/event/get_events',
           type: 'GET',
           async:false,
           data:{
                  sheet_id: selected_sheet_id()
                },
           error: function() {
              alert('there was an error while fetching events!');
              },      
          },
             ]

В противен случай направих един метод, който извлича данни за събитие с помощта на Ajax call Например:

  var ajaxreturnstring="";
       $.ajax({  
            type: "POST",  
            url: "/EMR-PHR/getPatientScheduleajax.html", 
           dataType:"html",
            data: "",
           async:false,
            success: function(data){
                ajaxreturnstring=$.trim(data);
                 var obj = eval("("+txt+")");
                     return obj;
            },  
            error: function(e){  
              alert('Error: ' + e);  
            }  
          }); 


   }
person HybrisHelp    schedule 19.07.2013
comment
Опитах async:false и това не работи. Бих могъл да напиша отделна заявка за ajax, но исках да използвам методите за извикване на fullcalendar, тъй като те имат правилните тригери кога да се направи повикване, за да се получат събития, когато ден, месец, година се превключват. Методите за извикване на пълна актуализация на календара също предоставят правилната рамка за дата за търсене. - person user2434674; 19.07.2013
comment
можете първо да намерите функция с повикване всеки път, когато се превключва ден, месец, година. И тогава Ajax извиква от тази функция. Така че всеки път, когато получите актуализиран JSON обект, аз направих същото в моя плъгин за седмичен календар на jquery. - person HybrisHelp; 19.07.2013
comment
Първоначално опитах това, свързвайки различните бутони с извикване на AJAX за актуализиране, но проблемът беше, че извикването за актуализиране на AJAX ще се задейства, преди пълният календар да може да актуализира променливата, показваща кой месец се преглежда. По този начин трябваше да изпратя всички данни за събития един месец преди и след отчетения месец, гледан от пълния календар. (По този начин щях да имам всички данни за датите, които могат да бъдат прегледани) Според мен това беше разточително, поради което разгледах използването на методи за пълен календар, които извличат от определен URL адрес и всъщност дават текущите актуализирани дати, които се разглеждат. - person user2434674; 19.07.2013