簡體   English   中英

全日歷JSON / AJAX

[英]Fullcalendar JSON/AJAX

目前,我正在研究Fullcalendar v3。

https://github.com/fullcalendar/fullcalendar/

https://fullcalendar.io/docs

我的events代碼用於設置在日歷中顯示項目所需的事件:

eventSources: [{

            events: function(start, end, timezone, callback) {
                $.ajax({
                    url     : 'dispatcher.php',
                    type    : 'post',
                    dataType: 'json',
                    data    : {
                        //  requires UNIX timestamps
                        start     : start.unix(),
                        end       : end.unix(),
                        component : 'Rak',
                        controller: 'Read',
                        task      : 'getCalendarEvents'
                    },
                    success : function(doc) {
                        var events = [];
                        $(doc).find('event').each(function() {
                            events.push({
                                title    : $(this).attr('title'),
                                start    : $(this).attr('start'), // will be parsed
                                end      : $(this).attr('end'), // will be parsed
                                className: $(this).attr('className')
                            });
                        });
                        callback(events);
                        console.log(doc);
                    }

                });
            }
        }]

Console.log(doc)

0:{id:“ 1”,標題:“ Testtesttest”,開始:“ 2019-01-15”,結束:“ 2019-01-16”,className:“ event-azure”}長度:1

但是...項目未顯示在日歷中。 我究竟做錯了什么? 目前我一無所知。

正在發送JSON格式,並且應該在事件中使用它。

非常感謝您的幫助!

硬編碼示例可顯示所需格式:

events: [
    {
      title  : 'event1',
      start  : '2010-01-01'
    },
    {
      title  : 'event2',
      start  : '2010-01-05',
      end    : '2010-01-07'
    },
    {
      title  : 'event3',
      start  : '2010-01-09T12:30:00',
      allDay : false // will make the time show
    }
  ]

您可以執行以下操作:

$('#calendar').fullCalendar({
    events: {
               url: "<?php echo Yii::getAlias('@COMPANY_URL') . '/shedule/get_event' ?>",
          }
});

在dispatcher.php中,您必須生成如下格式的json

   [
    {
      title: 'Event Title1',
      start: '2015-03-17T13:13:55.008',
      end: '2015-03-19T13:13:55.008'
    },
    {
      title: 'Event Title2',
      start: '2015-03-17T13:13:55-0400',
      end: '2015-03-19T13:13:55-0400'
    }
  ]

在我的控制器中是這樣的:

public function actionGet_event() {

        $events = Shedule::find()->all();
        $eventsJson = array();
        foreach ($events as $event) {
            $url = "https://www.google.co.in/";
            $eventsJson[] = array(
                'description' => $event->event_desc,
                'title' => $event->event_title,
                'start' => $event->event_date,
                'edit' => $url,
                'className' => ["event", "bg-color-greenLight"],
                'icon' => 'fa-check',
            );
        }
        echo json_encode($eventsJson);
    }

根據您的問題文本, console.log(doc)已經生成了一個有效的事件數組( 根據事件對象fullCalendar文檔,具有有效的值和字段名),因此您無需創建單獨的events變量,也不必進行處理doc以任何方式。

相反,您可以直接將數據直接傳遞給fullCalendar,而無需對其進行任何處理:

success : function(doc) { 
  callback(doc); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM