You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FullCalendar无法加载AJAX获取的数据库事件问题求助

排查FullCalendar事件无法显示的问题

咱们一步步拆解问题,找出事件不显示的原因:

1. 先修正AJAX回调的语法错误

你当前的success回调代码存在明显的语法问题——直接在函数里写eventSources: [...]是无效的JavaScript写法,这不是正确的事件源赋值方式。你需要把获取到的事件数据关联到你的FullCalendar实例上,而不是孤立地写配置项。

两种正确的实现方式:

方式一:动态更新已初始化的日历

如果你的日历已经提前初始化完成,可以通过实例方法添加事件源:

// 先初始化日历并保存实例引用
const calendar = new FullCalendar.Calendar(document.getElementById('your-calendar-id'), {
  // 其他基础配置,比如视图类型、头部按钮等
});
calendar.render();

// 然后发起AJAX请求
$.ajax({
  type: 'GET',
  contentType: 'application/json',
  url: '/api/Bookings/' + sessionStorage.getItem("id"),
  success: function (eventsArr) {
    // 先移除旧的事件源(可选,避免重复加载)
    calendar.getEventSources().forEach(source => source.remove());
    // 添加新的事件源
    calendar.addEventSource({
      events: eventsArr,
      color: 'blue',
      textColor: 'white'
    });
  },
  error: function(xhr) {
    // 别忘了添加错误处理,排查请求是否失败
    console.log('AJAX请求出错:', xhr.responseText);
  }
});

方式二:用FullCalendar自带的事件源配置(更推荐)

FullCalendar本身支持直接配置事件源URL,会自动处理AJAX请求,不需要手动写$.ajax:

new FullCalendar.Calendar(document.getElementById('your-calendar-id'), {
  eventSources: [
    {
      url: '/api/Bookings/' + sessionStorage.getItem("id"),
      method: 'GET',
      color: 'blue',
      textColor: 'white'
    }
  ],
  // 其他日历配置项
}).render();

2. 检查事件数据的有效性

看你返回的事件数组,前两个事件的title是空字符串。FullCalendar默认需要title来渲染事件内容,如果title为空,这类事件可能不会显示。你可以给空title的事件设置默认值(比如"无标题"),确保所有事件都能被渲染。

另外,你返回的start字段格式是标准的ISO 8601格式("2018-01-01T01:01:01"),这是FullCalendar支持的格式,这部分没问题。

3. 调试小技巧

  • 打开浏览器开发者工具(F12),切换到Network标签,确认AJAX请求的状态码是200,响应数据和你贴出的数组一致。
  • 切换到Console标签,检查有没有JavaScript语法报错或引用错误,这类错误会直接导致代码执行失败。
  • 如果用FullCalendar自带的事件源配置,也可以在Network标签里确认请求是否正常发起。

按照上面的步骤调整后,应该就能解决事件不显示的问题啦!

内容的提问来源于stack exchange,提问作者Boris Grunwald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:28:33