我的django
应用的index.html
页面使用jquery fullcalendar,由名为index()
的django视图填充,该视图使用simplejson
转储包含当月所有日期事件的数组。该方法呈现index.html
模板。
我正在点击日历的ajax get
进行prev button
调用,调用另一个django视图prev_month()
。此方法计算上个月的事件数组并转储它并最终呈现另一个模板'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'
。它还使用current_events
填充日历,该视图由名为{{1}的django视图传递}。
django视图是
index()
当我进入索引页面时,日历显示当前月份的所有事件。当点击上一步按钮时,执行django视图prev_month()。但由于某种原因,呈现的模板是{{1} }而不是def index(request):
...
#creates events array and jsondump
return render_to_response('index.html',{'current_events':events_array})
。这从成功提醒显示index.html
而不是prev_month.html
因此,不会显示上个月的事件。
有人可以帮我弄清楚为什么会这样吗?
答案 0 :(得分:1)
不使用您的AJAX调用的响应。
您必须更改$.ajax()
调用,以便成功函数实际绑定数据(即来自Django服务器的响应);我们在示例中使用$.get()
以便于阅读:
$.get('/myapp/prev_month/'+year+'/'+month, function(data) {
$('#calendar').fullCalendar({events: data});
});
请参阅http://api.jquery.com/jQuery.get/
上的jQuery.get文档这应使用您的fullCalendar()
方法,并将收到的data
作为events
的新值。
查看JavaScript错误控制台,看看data
的格式是否会导致问题;如果是这样,您必须在prev_month()
内将结果作为JSON返回。