使用fullcalendar.io与Slim和AJAX



使用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'
});

相关内容

  • 没有找到相关文章

最新更新