FullCalendar - 无法使用JSON Feed的URL显示事件

时间:2017-10-13 13:30:35

标签: json fullcalendar

我知道在这些论坛上多次询问过这个问题(我知道因为我在过去几天一直在漫游这些论坛以寻找解决方案),但我仍然找不到合适的解决方案。

我正在使用FullCalendar插件并尝试通过JSON Feed文件的URL来加载显示的事件。当我直接在JS文件中插入对象时,它可以正常工作:

events: [
  {
    "title": "mytitle1",
    "start": "2017-10-12T12:00:00Z",
    "end": "2017-10-12T14:00:00Z"
  },
  {
    "title": "mytitle2",
    "start": "2017-10-12T15:00:00Z",
    "end": "2017-10-12T17:00:00Z"
  }
]

但是当我使用URL时,事件将不会显示。这是JS脚本。它应该有其他功能,如eventClick,选择等...但我已经评论出来,因为它们似乎与问题无关:

$(document).ready(function(){
  var calendar = $('#calendar').fullCalendar({
    header:{
        left: 'prev,next, today',
        center: 'title',
        right: 'agendaWeek,agendaDay'
    },
    defaultView: 'agendaWeek',
    buttonIcons:{
        prev: 'left-single-arrow',
        next: 'right-single-arrow'
    },
    editable: true,
    selectable: true,
    allDaySlot: false,
    slotDuration: '00:15:00',
    slotLabelInterval: '01:00:00',

    events: "json.php"
  })
});

最终我想用来自数据库的输入填充JSON文件,但是现在甚至在json.php文件中创建简单对象,使用json_encode并回显结果不会使事件显示。

json.php脚本:

class TestClass{
  var $title;
  var $start;
  var $end;
}

$var1 = new TestClass();
$var1 -> title = "mytitle1";
$var1 -> start = "2017-10-12T12:00:00Z";
$var1 -> end = "2017-10-12T14:00:00Z";

$var2 = new TestClass();
$var2 -> title = "mytitle2";
$var2 -> start = "2017-10-12T15:00:00Z";
$var2 -> end = "2017-10-12T17:00:00Z";

$arr = array($var1, $var2);

$arrjson = json_encode($arr, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
echo "<pre>" . $arrjson . "</pre>";

运行json.php文件时,我得到一个正确的JSON字符串(由jsonlint.com验证并直接插入JS文件,如上所示):

[
  {
    "title": "mytitle1",
    "start": "2017-10-12T12:00:00Z",
    "end": "2017-10-12T14:00:00Z"
  },
  {
    "title": "mytitle2",
    "start": "2017-10-12T15:00:00Z",
    "end": "2017-10-12T17:00:00Z"
  }
]

但事件仍然不会显示。 我已经尝试过更改日期字符串,但这应该是正确的ISO8601格式,并且再次 - 它直接插入JS文件时确实有效。此外,json.php文件与JS文件位于同一目录中,因此不应该是一个问题。

过去几天我一直在努力奋斗。有任何想法吗? 提前谢谢。

对我有用的是从json.php文件中删除“pre”标签,并添加标题:

header("Content-type:application/json");

除此之外,json.php文件与请求它的JS文件位于同一文件夹中,但显然FullCalendar在项目的根目录中查找该文件。

感谢ADyson的帮助!

0 个答案:

没有答案