使用slim框架,我创建了一个路由,从数据库中选择一条记录,并将其编码为json,并将其呈现到视图中。
<?php
$app->get('/calendar/json', function() use ($app) {
$events = $app->Calendar->all();
$events = json_encode($events);
$app->render('calendar/json.json', array(
"events" => $events
));
})->name('calendar.json');
?>
显示这个结果
[{"id":"1","title":"Test Event","start":"2015-07-01"},{"id":"2","title":"Test Event 2","start":"2015-07-09"}]
使用jQuery完整日历库,我想使用ajax将这些数据拉入日历。
在使用外部Json文件的站点外的示例中,数据显示在日历上。
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
eventLimit: true,
events: {
url: "data.json",
}
});
如果我复制这个,但改变URL参数来访问我的视图,数据不显示,但它以相同的方式格式化。
var url = "{{ urlFor('calendar.json') }}";
url: url,
这是我在jQuery中替换的访问视图,这是访问视图的正确方式还是视图不呈现,因为我不是直接在页面上的视图
First:
你的Json不能是有效的Json,因为你没有设置内容类型-所以我认为它将是text/html
(或其他东西)而不是application/json
。
那么设置它并直接返回Json作为Response-body:
$app->response()->header('Content-Type', 'application/json');
$app->response()->setBody($events);
也不需要空视图
第二:在文档中有一个基本的例子,没有一些自定义参数,"说"你可以直接传递url作为events
。
$('#calendar').fullCalendar({
events: '/myfeed.php'
});