我想从mysql数据库中显示json的事件。但我不能在日历中显示它。我认为事件中有一些错误。但我无法指出。
这是我的代码:
calendar.php:
$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$('#calendar').fullCalendar({
theme: true,
draggable: true,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
/*events: "json_events.php",*/
events: function(start, end, callback){
$.getJSON("json_events.php",
{
start: start.getTime(),
end: end.getTime()
},
function(result){
for(var i=0; i<result.length; i++){
var row = result[i];
}
//format the result into an array of calevents
$('#calendar').fullCalendar('addEvent', {id:row[0], title:row[1], start:row[2], end:row[3]} );
//then pass the calevent array to the callback
callback(calevents);
}
);
},
eventClick: function(event){
editEventShow(event);
},
eventDrop: function(event, daydelta, minutedelta) {
alert(event.title + ' was moved ' + daydelta + ' days\n' + minutedelta + ' minutes\n'+
'(should probably update your database)');
},
dayClick: function(dayDate){
/*$('#dialog').dialog('open');
var date, month, year;
date = dayDate.getDate();
month = dayDate.getMonth()+1;
year = dayDate.getFullYear();
dayDate = year + "-" + month + "-" + date;*/
addEventShow(dayDate, this);
},
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
},
});
});
</script>
<style type='text/css'>
body {
margin-top: 40px;
text-align: center;
font-size: 13px;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
}
#calendar {
width: 900px;
margin: 0 auto;
}
</style>
</head>
<body>
<div id='calendar'></div>
</body>
</html>
json_events.php:
<?php
require("../../../connect/config.php");
$link = mysql_connect("$server","$user","$password") or die(mysql_error());
mysql_select_db($db);
$query = "SELECT id,title,start, end FROM events";
$result = mysql_query($query) or die(mysql_error());
$arr = array();
while($row = mysql_fetch_assoc($result)){
$arr[] = $row;
}
echo json_encode($arr);
?>
你能帮我解决这个问题吗?
感谢。
答案 0 :(得分:0)
for(var i=0; i<result.length; i++){
var row = result[i];
}
上面循环中的表达式将在循环的每次迭代中覆盖row
。所以稍后当你调用row [0],row [1]等时,你实际上并没有从中获取数组,除非最后的结果[i]实际上是一个数组(如果是这样的话)循环是不必要的)
我无法给你100%的答案,但这应该让你朝着正确的方向前进。
更新:我看起来有点困难,看起来你需要移动这条线:
$('#calendar').fullCalendar('addEvent', {id:row[0], title:row[1], start:row[2], end:row[3]} );
for循环内部。
答案 1 :(得分:0)
如果您提供已经在CalEvent表单中的JSON,您可以只提供一个返回JSON字符串的URL,该字符串使用您需要的信息格式化 - 不需要将其转换为cal事件的函数,如你注释掉了。
JSONLint将帮助您确定您是否拥有正确的JSON。您正在寻找的是:
[
{
id: row[0],
title: row[1],
start: row[2],
end: row[3]
},
{
... // next event
},
]
作为从json_event.php返回的字符串。