2012-04-13 13 views
1

マイdjangoアプリのindex.htmlページには、この方法はレンダリング現在month.Theのすべての日のイベントを含む配列をダンプするsimplejsonを使用していますindex()と呼ばれるDjangoのビューによって移入jqueryのfullcalendarを、使用していますindex.htmlテンプレート。間違ったHTMLテンプレート

私は別のDjangoのビューを呼び出すカレンダーのprev buttonのクリックでajax getコールがprev_month() .This方法は、前の月のイベント配列を計算し、それをダンプし、最終的に'prev_month.html'

def prev_month(request,year,month): 
    .... 
    prev_events=[] 
    #populates array by making db calls 
    return render_to_response('prev_month.html',{'prev_events':prev_events}) 

別のテンプレートをレンダリング作っていますprev_month.html

... 
<script> 
    $(document).ready(function() { 
     $('#calendar').fullCalendar({ 
     events: {{prev_events|safe}} 
    }); 
     $('.fc-button-prev').click(function(){ 
      var d=$('#calendar').fullCalendar('getDate'); 
      var month=d.getMonth()+1; 
      var year=d.getFullYear(); 
      $.ajax({url:'/myapp/prev_month/'+year+'/'+month,type:"GET", 
    success:function(){ 
        alert('prev_month.html::success'); 
}, 
}); 
}); 
</script> 

テンプレートindex.htmlは成功する以外は、上記のものと同様である警告が表示'index.html::success'index()というdjangoビューが渡されたので、current_eventsを使用してカレンダーにも値を設定します。

Djangoのビューは、

def index(request): 
    ... 
    #creates events array and jsondump 
    return render_to_response('index.html',{'current_events':events_array}) 

私はインデックスページに移動し、カレンダーが前のボタンがクリックされる.When現在の月のすべてのイベントを示しているDjangoのビューprev_month()のため.Butを実行します何らかの理由で、レンダリングされたテンプレートはindex.html代わりのprev_month.html .ThisではOためindex.html::success

代わりのprev_month.html::success

を示しており、成功の警告から明らかですこの前のイベントは表示されません。

なぜこのようなことが起こるのか理解できる人はいますか?

答えて

1

あなたのAJAXコールからの応答は使用されません。

$.ajax()呼び出しを変更して、成功関数がデータ(つまり、Djangoサーバーからの応答)を実際にバインドするようにする必要があります。私たちは、読みやすくするために例の$.get()を使用します。

$.get('/myapp/prev_month/'+year+'/'+month, function(data) { 
    $('#calendar').fullCalendar({events: data}); 
}); 

これはあなたのfullCalendar()メソッドを使用し、それを用受信dataとして、新たな価値を与えるべきhttp://api.jquery.com/jQuery.get/

でjQuery.getのドキュメントを超える参照してください。 events

dataの形式で問題が発生するかどうかを確認するにはJavaScriptエラーコンソールをご覧ください。その場合は、結果をJSON内のprev_month()に戻す必要があります。

+0

prev_month()はDjango内でprev_month.htmlをレンダリングします。問題は、AJAXリクエストを開始した後でローカルページテンプレート(index.html)を更新しないことです。 – cfedermann

+0

インデックスページの正確なHTML出力(使用しているJavaScriptを含む)を投稿できますか?これは問題を解決するのに役立ちます:) – cfedermann

+0

ここにインデックスページのhtml出力です。 http://pastebin.com/vnsC5qP2 – damon

関連する問題