我有一个我正在使用的JQuery日历插件,截至目前,我一直试图弄清楚如何使用AJAX从PHP文件中填充日历。
var Script = function () {
// calendar
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
/*---------------------------------------------------------------------------*/
window.onload = function myfunction() {
var xmlhttp;
if(window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest;
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("calendar").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "../ajax/calendar.php", true);
xmlhttp.send();
}
/*---------------------------------------------------------------------------*/
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,basicWeek,basicDay'
},
editable: false,
events: [
{
title: 'Lunch',
start: new Date(y, m, d, 12, 0),
end: new Date(y, m, d, 14, 0),
allDay: false
},
]
});
}();
这是PHP文件
<?
$query = mysql_query("SELECT * FROM table WHERE id = '1093'");
do {
$message = $row['message'];
$hour = $row['hour'];
$minute = $row['minute'];
$year = $row['year'];
$month = $row['month'];
$day = $row['day'];
$status = $row['status'];
if(eregi('pending', $status)) {
echo '
{<br>
title: '.$message.',<br>
start: new Date('.$year.', '.$month.', '.$day.', 12, 0),<br>
end: new Date('.$year.', '.$month.', '.$day.', 14, 0),<br>
allDay: false<br>
},
';
}
}while($row = mysql_fetch_array($query));
} else header('location: error.php');
?>
如何从我的数据库表中获取信息以循环到我的JQuery插件?
答案 0 :(得分:1)
PHP有a json_encode()
method允许您将PHP数组转换为有效的JSON对象。
还要确保输出正确的内容类型标题。
header('Content-Type: application/json');
echo json_encode($my_datas_from_DB);
只需使用此方法输出您的内容,以便JavaScript可以使用它。
(旁注:JSON不是HTML,<br>
在尝试手动输出JSON时无效;
答案 1 :(得分:0)
比你想象的容易得多,你可以将你的events
属性定义为ajax调用,就像这样(在你的fullcalendar初始化中):
...
events: {
url: '../phpPath/pathToEventScript.php',
dataType: 'json',
type: "POST"
},
...
确保每个事件对象(在对象数组中)都具有start
属性。
PHP脚本:
$select = "SELECT title, start FROM events";
$stmt = $db->query($select);
$events = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($events);
答案 2 :(得分:-3)
做这样的事情:
“your.js”可能是这样的:
$.get( "../ajax/calendar.php", function( data ) {
$('#calendar').fullCalendar(eval("(" + data + ")"))
alert( "Calendar initilazed ;)" );
});
并且您的php文件不包含“&lt; br&gt;”标记为新行!