2014-01-15 28 views
0

我有一个我目前使用的JQuery日历插件,现在我一直在试图弄清楚如何使用AJAX从PHP文件中获取信息来填充日历。在JQuery FullCallendar中填充PHP数据

var Script = function() { 

//压延

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

你可以举一个例子,说明如果你没有动态地加载Javascript,你需要看看Javascript吗?你应该能够按照你打印数据的方式来回显它,它只是取决于它需要如何格式化。 – SharkofMirkwood

回答

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); 
+0

你说得对,比我想象的要容易得多。 Json_endoce()工作。 – mattchambers

1

PHP有a json_encode() method允许您将PHP数组转换为有效的JSON对象。

还要确保输出正确的内容类型标题。

header('Content-Type: application/json'); 
echo json_encode($my_datas_from_DB); 

只需用此方法输出您的内容,以便它可以被JavaScript使用。

(旁注:JSON是不是HTML,因为你尝试手动输出JSON <br>就不会在这里有效)

-3

做这样的事情:

“your.js” 可能是这样的:

$.get("../ajax/calendar.php", function(data) { 
    $('#calendar').fullCalendar(eval("(" + data + ")")) 
    alert("Calendar initilazed ;)"); 
}); 

和你的PHP文件havenot包括“< “标签为新行!

+0

No:|不要从服务器上评估任何东西。 –