我正在使用 jquery 和 jquery ui 1.8.7。我在页面加载时创建了一个内联日期选择器,然后在我的 ajax 成功函数中,我调用 $('#mydiv').datepicker('refresh'); (我将在下面发布代码)。
如果数据已从 ajax 返回(例如在刷新时),则 beforeShowDay 调用 highlightDays() 函数。我知道在一切崩溃停止之前,我用正确的数据两次点击 highlightDays,我收到错误“TypeError:无法读取未定义的属性 0”。
似乎事件数组在一段时间后被破坏了,但我对 ajax 的了解还不够,无法真正说出发生了什么。谁能指出我正确的方向来解决这个问题?
function highlightDays(date) {
var day = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
console.log(typeof(events)); // This will return as an object twice before throwing an the above mentioned error
if($.inArray(day, events) !== -1) {
return new Array(true, '');
} else {
return new Array(false, '');
}
}
function getEventData() {
return $.ajax({
url: Drupal.settings.basePath + 'correct_path',
data: search+'&path='+window.location.pathname,
dataType: 'json',
type: 'POST',
success: function(data, textStatus, jqXHR) {
// save our returned data
events = new Object();
events = data;
$('#mydiv').datepicker("refresh");
}
});
}
function createDatepicker() {
// Attach datepicker to the parent div so it returns as
// inline.
$('#mydiv').datepicker({
dateFormat: 'yy-mm-dd',
speed: 'immediate',
altField: '#edit-date-filter-value-datepicker-popup-1',
beforeShowDay: function(date) {
if(typeof (_event_days) === 'undefined') {
return new Array(true, '');
} else {
highlightDays(date);
}
},
});
$('#myinput').hide();
}
getEventData();
createDatepicker();