我有FullCalendar(1.6.4)使用单个JSON提要(单个用户的日历)。现在,我想增强功能,以便日历显示多个用户日历(管理员及其子帐户日历)。在调用日历之前,我不知道将调用多少个用户日历。所以,我有一个Ajax函数调用PHP脚本,该脚本返回管理员帐户的所有用户ID的JSON提要。
$(document).ready(getUsers);
function getUsers() {
var data = $.ajax( {
url: '/s/calendar_userdata.php',
method: 'GET',
dataType: 'json',
success: function(userData) {
var user_count = userData.length;
var uid_array = [];
// Create the sources
for (var i = 0; i < user_count; i++)
{
var uid = userData[i].uid;
if(!uid_array[i]) uid_array[i] = [];
uid_array[i] = uid;
}
}
});
loadCal();
}
Ajax调用有效。正如预期的那样,我得到了一个像[7,47]这样的数组(uid_array)。我想在我的loadCal函数中使用这个数组,如下图所示,但是在getUsers函数结束后我无法保持它。
function loadCal() {
$('#calendar').fullCalendar({
eventSources: [
{
url: '/s/events.php',
type: 'GET',
data:
{
uid: uid_array
}
}
],
editable: true,
.........
我试过了: 1)通过最初在没有“var”的getUsers之外定义uid_array来创建全局变量。 2)设置“window.uid_array = uid_array;”在getUsers函数中。 3)添加“return uid_array;”在getUsers函数的末尾。 4)在getUsers函数的末尾添加一个闭包。但是,我没有把握得太好,不能相信我做得对。
我有两个问题: 1)如何在getUsers之外使数组(uid_array)可用? 2)数组需要采用何种格式才能使fullCalendar识别并使用它?
我已经坚持了一段时间。非常感谢。
答案 0 :(得分:0)
我认为如果您更改loadCal
功能的位置,则可以实现目标:
function getUsers() {
var data = $.ajax( {
url: '/s/calendar_userdata.php',
method: 'GET',
dataType: 'json',
success: function(userData) {
var user_count = userData.length;
var uid_array = [];
// Create the sources
for (var i = 0; i < user_count; i++)
{
var uid = userData[i].uid;
if(!uid_array[i]) uid_array[i] = [];
uid_array[i] = uid;
}
//CALL loadCal FROM HERE
loadCal(uid_array);
}
});
}
修改loadCal
以接受uids数组:
function loadCal(uidArray) {
$('#calendar').fullCalendar({
eventSources: [
{
url: '/s/events.php',
type: 'GET',
data:
{
uid: uidArray
}
}
],
editable: true,
当您在ajax
中进行getUsers
来电时,系统不会返回该号码,并且会调用loadCal
。因此,您需要确保仅在success
回调中返回ajax后才调用它。