2012-03-21 15 views
25

でカスタムパラメータを送信し、カレンダーをリフレッシュしてください。イベントデータは、JSONを使用してサーバーから取得されます。 マイページには、ドロップダウン要素とフルカレンダーのdivがあります。jquery fullcalendar jquery fullcalendarを使用しようとすると、JSON

私が必要とするのは、ユーザーがドロップダウンを変更するたびにカレンダーを更新することです。ドロップダウンリストの選択した値は、ここで新しいイベントデータに

をフェッチするために、サーバーにポストされなければならない私のコード

 $(document).ready(function() { 
     $('#calendar').fullCalendar({ 
      events: { 
       url : '/myfeed', 
       data : {personId : $('#personDropDown').val() } 
      } 
     }); 

     $('#personDropDown').change(function(){ 
      $('#calendar').fullCalendar('refetchEvents'); 
     }); 

    }); 

しかしdoesntの仕事上のコードです。 ヘルプがありますか?

+1

/myfeedやる/何を参照するのでしょうか?私はそれがクエリ文字列値 "personId"を受け取って、jsonソースを返すためにルックアップを実行すると仮定します。 refetchEventsはそれを(docoに従って)実行する必要がありますが、おそらくrerenderEventsも呼び出す必要があります。投稿/返送中のデータをキャプチャするためのトレース(Windowsの場合はFiddlerなど)を実行しましたか? – frumbert

答えて

26

はこれを試して変更したとき は、私の場合は、日付を取る:これは、少なくとも2.0.2で動作します

$(document).ready(function() { 
    $('#calendar').fullCalendar({ 
     events: { 
      url: '/myfeed', 
      data: function() { // a function that returns an object 
       return { 
        personId: $('#personDropDown').val(), 
       }; 

      } 
     }); 


    $('#personDropDown').change(function() { 
     $('#calendar').fullCalendar('refetchEvents'); 
    }); 

}); 
+0

これは解決策です。 fullcalendar http://fullcalendar.io/docs/event_data/events_json_feed/のドキュメントの「動的データパラメータ」の – inye

0

私はそれを働かせることができませんでした。 は、だから私はこれに似た解決策になってしまった:

$('#personDropDown').change(function() { 
      var source = { 
       data: { 
        filter: $('#personDropDown').val() 
       }, 
       url : '/myfeed' 
      }; 
      $('#calendar').fullCalendar('removeEvents'); 
      $('#calendar').fullCalendar('addEventSource', source); 
     }); 
30

は最後に、次のコードで働いていた:私はAJAXイベントの後、このようにリフレッシュ

$(document).ready(function() { 
     loadCalendar(); 
     $('#siteSelect').change(function(){ 
      var selectedSite = $('#siteSelect').val(); 
      var events = { 
        url: '/myfeed2', 
        type: 'POST', 
        data: { 
        siteid: selectedSite 
        } 
      } 
      $('#calendar').fullCalendar('removeEventSource', events); 
      $('#calendar').fullCalendar('addEventSource', events); 
     }); 

    }); 
+2

ありがとう。答えとしてマークしてください。 –

+0

も私のために働いています:) – Paulj

+0

私はすべてのソリューションをテストしましたが、あなたの仕事は – Eagle

3

インスタンスのモーダルを使用してイベントを追加します。

$('#cal').fullCalendar('removeEvents'); 
$('#cal').fullCalendar('addEventSource', "../calendar/json-events2.php") 
$('#cal').fullCalendar('rerenderEvents'); 
+0

私のために働かない。 $( "#1 overviewDatePicker")日付ピッカー( { にonSelect:関数(イベント){ \t VAR開始= $( "#1 overviewDatePicker")のval(); \t VAR端= "2016年10月21日";。 \t $アヤックス({ \t \t URL: "?fullcalendar /デモ/ PHP /取得-events.phpモード= customdate&=スタート" + +スタート "&終了=" +終わり、 \t \tタイプ: "GET"、 \t \t成功:関数(結果){ \t \t \t console.log(結果); \t \t \t $( '#calendar')。fullCalendar( 'removeEvents');\t \t \t $( '#calendar')。fullCalendar( 'addEventSource'、result); \t \t \t $( '#calendar')。fullCalendar( 'rerenderEvents'); \t \t \t \t \t} \t}); }、 }); –

0

これは、関数をイベントソースとして使用することで実現できます。 refetchEventsイベントでは、fullCalendarはカスタム値を返す関数を呼び出し、サービスに通知します。

$(document).ready(function() { 
     $('#valueSelect').change(function(){ 
      if ($('#calendar').hasClass('fc')) 
      { 
       $('#calendar').fullCalendar('refetchEvents'); 
      } 
      else 
      { 
       $('#calendar').fullCalendar({ 
        events: function(start, end, callback) { 
         $.ajax({ 
          url: 'web-service-link', 
          type: 'GET', 
          dataType: "json", 
          contentType: "application/json; charset=utf-8", 
          data: { 
           start: Math.round(start.getTime()/1000), 
           end: Math.round(end.getTime()/1000), 
           customValue: GetCustomValue() 
          } 
         }); 
        } 
       }); 
      } 
     }); 
}); 

function GetCustomValue() 
{ 
    return $('#valueSelect').val(); 
{ 
2

問題は、ドロップダウンリストの元の値のコピーを持つイベントオブジェクトを作成した後、あなたがドロップダウンの値を変更しているということです。次は何が必要です:

$('#dropdownId').change(function() { 
    events.data.customParam = $(this).val(); 
    $('#calendar').fullCalendar('refetchEvents'); 
}); 

これは私がように解決し、それがドロップダウンのonchangeからアクセスできる領域とfullcalendar初期化(例えば、ドキュメントのonload)

1

で作成されたイベントオブジェクトに依存していますthis

  data: function() { // a function that returns an object 
     return { 
       custom_param1: date_start, 
      custom_param2: date_end 
      }; 
     }, 

この関数は、date_startとdate_endの値を変更した後、新しい値を取得します。ビューが

viewRender: function(view,element){ 
     date_start = $.fullCalendar.formatDate(view.start,'dd/MM/yyyy'); 
     date_end = $.fullCalendar.formatDate(view.end,'dd/MM/yyyy'); 
}, 
3

dataは、動的ドロップダウン値が入力されたオブジェクトを返す関数になります。新しいドロップダウン値が選択されたときにカレンダーを更新するにはchangeが追加されます。

$("#calendar").fullCalendar({ 
    events: { 
     url: "/myfeed", 
     data: function() { 
      return { 
       dynamicValue: $("#dropdownList").val() 
      }; 
     }, 
     type: "POST" 
    } 
}); 

$("#dropdownList").change(function() { 
    $("#calendar").fullCalendar("refetchEvents"); 
}); 
+0

によれば、これは私にとっては完璧に機能しました。私のカレンダーを理解するには、少なくとも私を正しい軌道に乗せてください。ありがとうございました! –

+0

私には役に立たない。 $( "#1 overviewDatePicker")日付ピッカー( { にonSelect:関数(イベント){ \t VAR開始= $( "#1 overviewDatePicker")のval(); \t VAR端= "2016年10月21日";。 \t $アヤックス({ \t \t URL: "?fullcalendar /デモ/ PHP /取得-events.phpモード= customdate&=スタート" + +スタート "&終了=" +終わり、 \t \tタイプ: "GET"、 \t \t成功:関数(結果){ \t \t \t console.log(結果); \t \t \t $( '#calendar')。fullCalendar( 'removeEvents');\t \t \t $( '#calendar')。fullCalendar( 'addEventSource'、result); \t \t \t $( '#calendar')。fullCalendar( 'rerenderEvents'); \t \t \t \t \t} \t}); }、 }); –

0

私はこのに自分自身を実行し、値がカレンダーが初期化されるときに保存されたデータオブジェクトのニーズが変更されたため、これを行うための、より動的な方法があります。

$(document).ready(function() { 
     $('#calendar').fullCalendar({ 
      events: { 
       url : '/myfeed', 
       data : {personId : $('#personDropDown').val() } 
      } 
     }); 

     $('#personDropDown').change(function(){ 
      $('#calendar').data('fullCalendar').options.events.data.personId = $(this).val(); 
      $('#calendar').fullCalendar('refetchEvents'); 
     }); 

    }); 
0
This is right way. 

$.ajax({ 
    url: 'ABC.com/Calendar/GetAllCalendar/', 
    type: 'POST', 
    async: false, 
    data: { Id: 1 }, 
    success: function (data) { 
     obj = JSON.stringify(data); 
    }, 
    error: function (xhr, err) { 
     alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status); 
     alert("responseText: " + xhr.responseText); 
    } 
}); 

/* initialize the calendar 
-----------------------------------------------------------------*/ 
var date = new Date(); 
var d = date.getDate(); 
var m = date.getMonth(); 
var y = date.getFullYear(); 

var calendar = $('#calendar').fullCalendar({ 
    //isRTL: true, 
    buttonHtml: { 
     prev: '<i class="ace-icon fa fa-chevron-left"></i>', 
     next: '<i class="ace-icon fa fa-chevron-right"></i>' 
    }, 
    header: { 
     left: 'prev,next today', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    }, 
    //obj that we get json result from ajax 
    events: JSON.parse(obj) 
    , 
    editable: true, 
    selectable: true  
}); 
関連する問題