Javascript 选择ajax加载的日期和特殊日期,以在gldatepicker中设置
我正在使用gldatepicker。我想通过ajax从数据库中加载gldatepicker的一些设置,如星期几、特殊日期等。现在我有以下js代码:Javascript 选择ajax加载的日期和特殊日期,以在gldatepicker中设置,javascript,jquery,Javascript,Jquery,我正在使用gldatepicker。我想通过ajax从数据库中加载gldatepicker的一些设置,如星期几、特殊日期等。现在我有以下js代码: $(document).ready(function () { loadAllSettings(); }); var loadAllSettings = function () { startDate = ''; endDate = ''; selectDay = ''; offdays = '';
$(document).ready(function () {
loadAllSettings();
});
var loadAllSettings = function () {
startDate = '';
endDate = '';
selectDay = '';
offdays = '';
$.ajax({
url: "bs_client_function.php",
type: "post",
dataType: "json",
data: {
action: 'getDateRange'
},
success: function (html) {
// alert(html.start);
startDate = Date.parse(html.start);
endDate = Date.parse(html.end);
}
});
$.ajax({
url: "bs_client_function.php",
type: "post",
dataType: "json",
data: {
action: 'getOffdays'
},
success: function (html) {
i = 0;
offdays = '[';
while (i < html.length) {
offdays = offdays + {
date: new Date(html[i]),
repeatYear: false,
cssClass: 'noday'
};
i = i + 1;
}
offdays = offdays + ']';
}
});
$.ajax({
url: "bs_client_function.php",
type: "post",
data: {
action: 'getDays'
},
success: function (html) {
var data = $.parseJSON(html);
// alert("[" + data + "]");
selectDay = '[' + data + ']';
// alert(selectDay);
showCalender(startDate, endDate, selectDay, offdays);
}
});
alert(selectDay);
console.log('selectDay' + selectDay);
};
现在只有stardate和enddate正常工作。选择Day,offdays不工作。我在控制台中打印selectDay,我得到了这个:[1,2,3],但它不工作。我缺少什么,或者应该用什么正确的方法来做。
提前感谢…问题在于如何获取填充GLDATECIPKER的数据。 您有3个ajax调用,这些调用在默认情况下是异步的,您在最后一个成功函数中执行ShowCalendar函数,但是您无法确定前面的调用是否已完成 通过将async参数设置为false,可以使ajax调用同步。请参见jQuery: async default:true Type:Boolean默认情况下,发送所有请求 异步,即默认情况下设置为true。如果你需要 同步请求,将此选项设置为false。跨域请求 和数据类型:jsonp请求不支持同步操作。 请注意,同步请求可能会暂时锁定浏览器, 在请求处于活动状态时禁用任何操作。从jQuery 1.8开始, 不推荐将async:false与jqXHR$一起使用;你 必须使用成功/错误/完成回调选项,而不是 jqXHR对象的相应方法,如jqXHR.done或 不推荐使用jqXHR.success 或者你可以在每次成功的回调中链接它们,但是你的代码将很难维护,或者你可以使用这个插件来管理多个ajax调用 它适用于本地数据,请参见: 仅注意specialDates选项需要的对象:
specialDates: [{
date: new Date(0, 8, 5),
data: {
message: 'Happy Birthday!'
},
repeatYear: true,
cssClass: 'special-bday'
}, {
date: new Date(2013, 0, 8),
data: {
message: 'Meeting every day 8 of the month'
},
repeatMonth: true
}]
在你的终端上做一点点额外的工作,你就可以创建一个加载你的代码和你正在使用的库的提琴。然后,那些不熟悉gldatepicker库的人可能会有所帮助,但我注意到,您有一个同步代码,它依赖于一个AJAX异步代码首先完成。您应该使用承诺模型或回调模型,并根据异步方法完成对showCalendar的调用谢谢–gillyspy的快速回复。请给我一些参考指南以使其工作??嗨,gillyspy,我已经编辑了我的问题。现在我给ajax success内部的showcalender打电话。它也不起作用。嗨,Edward,谢谢你的回复。我需要检查一下。如果它起作用,我会标记你的答案。再次感谢。关于特殊日期,我需要运行一个循环。它不是静态的。我看到了你的小提琴代码。在我的代码中,本地数据工作正常。格式化方面有问题吗我从ajax中获取的所有数据???没有问题,您必须只在本地设置或从ajax调用返回格式为specialDates的array ob对象。请参见:我应该如何返回array对象??您能给我一个示例吗?您现在如何从ajax调用getOffdays返回您的offdays变量?
specialDates: [{
date: new Date(0, 8, 5),
data: {
message: 'Happy Birthday!'
},
repeatYear: true,
cssClass: 'special-bday'
}, {
date: new Date(2013, 0, 8),
data: {
message: 'Meeting every day 8 of the month'
},
repeatMonth: true
}]