在JQuery FullCalendar中填充PHP数据

时间:2014-01-15 22:20:03

标签: javascript php ajax jquery

我有一个我正在使用的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插件?

3 个答案:

答案 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;”标记为新行!