2016-03-30 3 views
0

Похож на хорошо известную проблему, но я все еще не мог найти решение.Fullcalendar Json Events Feed Not Displaying Anything

Я тестирую Fullcalendar с Планировщиком на своем локальном хосте. Я пытаюсь заменить статический поток данных как массив данными из базы данных MySQL. Я следил за рекомендациями, но события не отображаются.

Вот мой код:

<script type='text/javascript'> 

    $(document).ready(function() { 

     var date = new Date(); 
     var d = date.getDate(); 
     var m = date.getMonth(); 
     var y = date.getFullYear(); 

     $('#calendar').fullCalendar({ 

      schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source', 

      header: { 
       left: 'prev,next', 
       center: 'title', 
       right: 'today' 
      }, 

      views: { 
       agendaWeekly: { 
        type: 'agenda', 
        duration: { days: 7 }, 

        // views that are more than a day will NOT do this behavior by default 
        // so, we need to explicitly enable it 
        groupByResource: true, 

        //// uncomment this line to group by day FIRST with resources underneath 
        groupByDateAndResource: true 
       } 
      }, 

      defaultView: 'agendaWeekly', 
      lang: 'sl', 

      businessHours: { 
       start: '08:00', // a start time (10am in this example) 
       end: '22:00', // an end time (6pm in this example) 
      }, 

      allDaySlot: false, 
      minTime: '08:00:00', 
      maxTime: '22:00:00', 

      defaultDate: '2016-03-30', 
      nowIndicator: true, 

      resourceLabelText: 'Igrisca', 
      resources: [ 
       { id: '1', title: 'Igrišče 1', eventColor: 'green' }, 
       { id: '2', title: 'Igrišče 2', eventColor: 'green' } 
      ], 

      selectable: true, 
      selectHelper: true, 
      selectOverlap: false, 

      select: function(start, end, resource) { 
       var title = prompt('Rezervacija termina za (ime, tel):'); 
       var eventData; 
       if (title) { 
        eventData = { 
         title: title, 
         start: start, 
         end: end, 
         resourceId: resourceId 
        };asas 
        $('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true 
       } 
       $('#calendar').fullCalendar('unselect'); 
      }, 

      editable: true, 
      eventLimit: true, // allow "more" link when too many events 

      events: 'myfeed.php', 

     }); 

    }); 

</script> 

Последняя строка кода вызывает внешний файл myfeed.php, который имеет следующий код:

$dblink = mysql_connect('localhost', 'un', 'pw') or die(mysql_error()); 
mysql_select_db('db'); 
$rs = mysql_query($sql, $dblink); 
$event_array = array(); 
if ($rs && mysql_num_rows($rs)) {  
    while($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {   
     $event_array[] = array(
      'id' => $row['BookingID'], 
      'title' => $row['BookingNote'], 
      'start' => $row['BookingStartTime'], 
      'end' => $row['BookingEndTime'], 
      'resourceId' => $row['CourtID'] 
     ); 
     }} 
echo json_encode($event_array); 

Результат JSON является следующий массив:

[{"id":"1","title":"Goran 041\/853-184","start":"2016-03-30T19:00:00","end":"2016-03-30T21:00:00","resourceId":"1"},{"id":"2","title":"Janez","start":"2016-03-31T10:00:00","end":"2016-03-31T12:00:00","resourceId":"2"},{"id":"3","title":"Sa\u0161o","start":"2016-03-31T14:00:00","end":"2016-03-31T16:00:00","resourceId":"2"}] 

Если я вручную добавлю этот массив, он будет работать, и события будут показаны в календаре. Но я не могу заставить его работать через JSON. В чем может быть проблема?

+0

Действительно ли ваш «myfeed.php» называется или нет? – cverb

+0

ДА это так. Вот ссылка, я только что загрузил файлы на рабочий сервер: http://www.slotenis.si/rezervacije/ – gdolenc

+0

попробуйте установить заголовок заголовка json ('Content-Type: application/json'); 'перед вашим эхом – Yuri

ответ

0

Наконец получил это работает. Проблема была в полном пути к файлу JSON:

После того, как я изменил его от

/wp-content/themes/canvas-child/myfeed.php 

в

http://www.slotenis.si/wp-content/themes/canvas-child/myfeed.php 

Я получил это работает.

0

используя вместо этого события:

использование

eventSources: getSources() 

где getSources

getSources(){ 
var mysources = { 
    mysourceone:{ 
       url: YOUR URL TO GET JSON, 
       type: 'POST', 
       data:{ 
       //SOME DATA YOU MIGHT PASS, NOT important for your problem 
       }, 
       cache: false, 
       color: '#C1272D', 
       textColor: 'white' 
       } 
       } 
    return [mysources.mysourceone]; 
} 
+0

Нет, все еще не работает. – gdolenc

+0

На экране вашего браузера в ответной вкладке вы можете показать, что происходит с сервера? Когда вы осуществили мой sugestion, в том же представлении вы видели ajax-вызов? –

+0

Извините, это из моих знаний. Что именно и как я должен проверить? – gdolenc