1

データベースエントリを更新してイベントをレンダリングするのに非常に苦労しています。最初に、イベントを正常にレンダリングしました。

私は次のようなイベント配列を持っています:

{title: 'Available', start: new Date(2013, m, 05, 09,50), end: new
 Date(2013, m, 05, 10,00), allDay: false},{title: 'Available', start:
 new Date(2013, m, 04, 00,20), end: new Date(2013, m, 04, 00,50),
 allDay: false}

これは、次の方法でカレンダーにレンダリングされます。

events:[<?php echo $events?>]

これまで、コードは適切に機能し、必要に応じてイベントをレンダリングします。

前へ、次へボタンをクリックした後、データベースを更新してイベントをレンダリングする必要があります。それは次のようなものです:

 $('.fc-button-next span').live('click', function() {
        var calandar = $('#calandar');
         $.ajax({
            url: 'fetchEvents',
            dataType: 'JSON',
            type: 'POST',
            success: function(doc) {
                calandar.fullCalendar('removeEvents',event),
               calandar.fullCalendar( 'renderEvent',doc.events);
               calandar.fullCalendar('rerenderEvent',doc.events);
            }
        });
});

「 fetchEvents は前と同じイベント形式を返しますが、次のような JSON 形式です。

"{title: 'Available', start: new Date(2013, m, 05, 09,50), end: new Date(2013, m, 05, 10,00), allDay: false}"

次のクリック イベントで JSON イベント オブジェクトをレンダリングする方法がわからない。つまり、ajax 呼び出しを介して完全に新しいイベントをレンダリングする必要があります。提案してください。

解決済み:

私が作成したイベントの代わりに、Lukasz KoziaraJSONが最初に提案したようにイベントを作成し、カレンダー イベントが発生するたびにを取得してイベントを取得します。JSON イベントeventSource

[{"title":"Available","start":"2013-06-06 05:20:00","end":"2013-06-06 05:50:00","allDay":false}]

イベントの代わりに、このタイプを取得するためにajax 呼び出しを行いました 。これは次のようになります。eventSourcesJSON EVENTS.

 eventSources: [{
                    url: 'fetchEvents',
                    type: 'POST'
                }]

そのため、 、 、またはボタンがcalander初めてクリックされたときに、によって指定されたイベントを自己フェッチしますnextprevioustodaycalandereventSources.

4

1 に答える 1

1

最初の提案: 1 つのタイプのイベント ソースを使用しないのはなぜですか? たとえば、JSON フィードを使用します。イベントの範囲は GET パラメータstartendで取得できます。そのため、月またはビューを変更すると、データベースから適切なイベントを送信できます。

2 番目の提案: どうしても 2 種類のイベント ソースが必要な場合は、addEventSource / removeEventSourceを使用してみてください。

于 2013-06-04T08:02:35.563 に答える