2012-02-01 11 views
0

何らかの理由で、ajax経由でjquery fullcalendarでイベントデータが正しく動作しません。しかし、正しい形式のJSONデータを返すことは間違いありません。返されたデータをコピーして貼り付け、カレンダーを初期化するときにイベントソースにハードコードするだけであれば、正しく動作します。ここに私のコードはありますか?何が問題なのでしょうか?jquery fullcalendar - イベントデータの奇妙な問題

$(document).ready(function() { 
    // This is the data returned by the AJAX request - works fine when hard coded 
    var data = 
      [{"title":"Test Event","description":"<p>Tester<\/p>","start":"1329264000","end":"1329264000","className":"sport junior_school"}];   

     var cal = $('#calendar').fullCalendar({ 
      header: { 
       left: 'prev,next today', 
       center: 'title', 
       right: 'month,agendaWeek,agendaDay' 
      }, 
      editable: true, 
      eventSources: [ 
       '<?php echo Url::base()?>school-calendar/fetch_events' 
       //data 
      ] 
     }); 
}); 
+0

「正しく動作していません」と定義します。また、PHPコードの_actual_出力を表示してください。 – JAAulde

+0

イベントソースとしてURLを使用している場合、カレンダーにイベントが表示されません。上記の貼り付けられたコードの 'data' varに示されているように、JSONレスポンスをハードコーディングすると、イベントはカレンダーに表示されます。 PHPの出力はUrl :: baseを使用してUrlが生成される場所とは別に上記と同じです – bsod99

+0

Kohanaを使用してURLを生成しますか(http://docs.kohanaphp.com/helpers/url)?もしそうなら、 'Url :: base'の大文字の' U'とは対照的に 'url :: base()'ではないでしょうか? – JAAulde

答えて

1

コメントのディスカッションからリンクしたページでは、投稿に表示されたコードを使用していません。実際のページでは、dataという名前のvarを$.getJSONへの呼び出しの戻り値に設定してから、dataをイベントソースとしてfullCalendarに渡します。

var data = $.getJSON('http://staging.jem-digital.com/lathallan/public_html/school-calendar/fetch_events'); 

$('#calendar').fullCalendar({ 
    //blah blah... 
    eventSources: [ 
     data 
    ], 
    //blah blah... 
}); 

それに伴う問題は、$.getJSONjQXHRオブジェクトを返し、fullCalendarデータソースとして、このようなオブジェクトを取ることができないということです。 Firebugので

、私はあなたの#calendar要素を空にし、次のことを実行する場合、私はカレンダー上のイベントを取得する:あなたが本当にあなた自身のAJAX呼び出しを実行したい場合は、あなたがする必要がある、

$('#calendar').fullCalendar({ 
    header: { 
    left: 'prev,next today', 
    center: 'title', 
    right: 'month,agendaWeek,agendaDay' 
    }, 
    editable: true, 
    eventSources: [ 
    'http://staging.jem-digital.com/lathallan/public_html/school-calendar/fetch_events' 
    ], 
    eventRender: function (event, element) { 
    element.qtip({ 
     content: { 
     text: formatEvent(event), 
     title: { 
      text: event.title, 
      button: true 
     } 
     }, 
     show: { 
     event: 'click', // Show it on click... 
     solo: true // ...and hide all other tooltips... 
     }, 
     hide: false, 
     style: { 
     classes: 'ui-tooltip-light ui-tooltip-shadow ui-tooltip-rounded' 
     } 
    }); 
    } 
}); 

$.getJSONの成功コールバックでカレンダーにデータを渡します。このようなものの1つのバリエーションがあります:

$.getJSON('http://staging.jem-digital.com/lathallan/public_html/school-calendar/fetch_events', function (data) { 
    $('#calendar').fullCalendar({ 
     //blah blah... 
     eventSources: [ 
      data 
     ], 
     //blah blah... 
    }); 
}); 

私は後者にほとんど利益を見ません。

+0

あなたのサイトのソースに変更が加えられたことと、負荷がかかってカレンダーに縫いつけられたイベントに基づいて、これが問題だったと思いますか? – JAAulde

+0

私は実際に私が投稿したリンク上でJSを完全に更新しませんでした - 私は昨日、ローカルでテストしていました。あなたはgetJSONの使用について正しいです - 私はちょうど.getで試してみる前にそれを試してみました、そしてあなたが上にレイアウトしたアプローチ(最初のもの)。不思議なことに、問題は私のマシン上でローカルにしか見えないので、サイトのリモートバージョンは正しく動作しています。タッチが混乱する!助けてくれてありがとうJAAulde。 – bsod99