繁体   English   中英

在Slim和AJAX中使用fullcalendar.io

[英]Using fullcalendar.io with Slim and AJAX

使用苗条的框架,我创建了一条路由,该路由从数据库中选择一条记录并将其编码为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中替换的用于访问视图的方法,这是访问视图的正确方法,还是因为我不在视图页面上而不直接显示视图?

第一:

您的Json不能是有效的Json,因为您没有设置Content-Type,所以我认为它将是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'
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM