这让我发疯了,因为我似乎找不到我的代码或 JSON 有什么问题。我已经花了很多时间试图解决它,并在StackOverflow上阅读了大量的答案。
我有以下代码段:
Jquery
$(document).ready(function() {
$('#calendar').fullCalendar({
editable: true,
events: "/action/json/calender",
allDayDefault: false,
eventDrop: function(event, delta) {
alert(event.title + ' was moved ' + delta + ' daysn' +
'(should probably update your database)');
},
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
}
});
});
控制器
public function calender()
{
$this->load->model('json_model');
$data['json'] = $this->json_model->getCalender();
$this->load->view('json/calender', $data);
}
型
function getCalender()
{
$sql = "SELECT id, title, start, end, user_id FROM gc_calender";
$result = $this->db->query($sql);
return $result;
}
视图
<?php
$jsonevents = array();
foreach($json->result() as $entry)
{
$jsonevents[] = array(
'id' => 1,
'title' => $entry->title,
'start' => $entry->start,
'end' => $entry->end,
'allDay' => ''
);
}
echo json_encode($jsonevents);
杰伦示例
[{"id":1,"title":"title 1","start":"2013-09-08 00:00:00","end":"2013-09-08 10:00:00","allDay":""},{"id":1,"title":"title 2","start":"2013-09-17 00:00:00","end":"2013-09-17 10:00:00","allDay":""}]
我已经尝试过:
- 在Javascript本身中对其进行硬编码
- PHP 标头,因此它被输出为 json
- 旧版本的全压光机
这是有趣的部分..软件包附带的演示对我有用。但是,如果我将我的jquery代码指向该特定的json网址,我仍然没有得到任何事件。压光机本身变得精细。
我尝试了更多的东西:使用演示HTML页面和由codeigniter提供的JSON,它可以工作。我开始认为要么与其他脚本发生冲突,要么我需要在页眉而不是页脚中加载我的 scrips?
如果我检查标题,我可以节省自己 2 天......我们的设计师在 css 中添加了以下内容:
div {
position:relative;
overflow:hidden
}
删除它后,它就可以正常工作。不敢相信就是这么简单。
对我有用,试试吧!
控制器
public function show_calendar()
{
$query = $this->db->query("SELECT * FROM events ORDER BY start ASC");
$jsonevents = array();
foreach($query->result() as $entry)
{
$jsonevents[] = array(
'id' => $entry->id,
'title' => $entry->title,
'start' => $entry->start,
'end' => $entry->end,
'url' => $entry->url,
'allDay' => $entry->allDay
);
}
$data['json'] = json_encode($jsonevents);
$this->load->view('calendar',$data);
}
视图
<script type="text/javascript">
$(document).ready(function() {
$('#calendar').fullCalendar({
events:<?php echo $json ?>,
header:
{
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek'
}
});
});
</script>
尝试将事件引用从"events"更改为"eventSources":
$('#calendar').fullCalendar({
editable: true,
eventSources: [ { url: '/action/json/calender' } ],
allDayDefault: false,
eventDrop: function(event, delta) {
alert(event.title + ' was moved ' + delta + ' daysn' +
'(should probably update your database)');
},
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
}
});