FullCalendar 5.10.1使用JSON feed无返回结果时解析错误如何处理
问题根因
无匹配节日事件时,你的XModPro Feed接口返回了非JSON格式的空内容,而非FullCalendar期望的空数组[],导致JSON解析失败触发failure回调。优先在接口侧修复,前端兜底作为备选方案。
方案1:后端Feed修复(推荐)
你当前使用的XModPro JsonFeed 控件在SQL查询结果为空时,默认不会输出任何内容,导致返回值不是合法JSON结构。仅需要给JsonFeed标签增加空结果返回配置即可解决:
<xmod:JsonFeed runat="server" EmptyResultText="[]">
增加该属性后,就算SQL查不到对应节日的事件,接口也会返回合法的空数组[],FullCalendar可以正常解析,不会触发报错,空日历也能直接加载,无需额外修改前端代码。
方案2:前端临时兜底
如果暂时无法修改后端Feed代码,可以把事件源从默认的JSON Feed配置改成自定义events函数,手动处理请求逻辑,兼容空响应场景,替换你原有eventSources配置块即可:
eventSources: [ { // 用自定义events方法替代默认的JSON Feed配置,自行处理请求逻辑 events: function(info, successCallback, failureCallback) { $.ajax({ url: '/DesktopModules/XModPro/Feed.aspx', method: 'POST', dataType: 'json', data: { pid: '0', xfd: 'Events_FullCalendar_FestivalID', FestivalID: '[[FestivalID]]', start: info.startStr, end: info.endStr }, success: function(res) { // 返回结果不是数组的话统一兜底为空数组 successCallback(Array.isArray(res) ? res : []); }, error: function(xhr) { // 仅当接口真的报错(非200状态码)时才弹出错误提示 if(xhr.status !== 200) { alert('获取事件数据失败'); failureCallback(xhr); } else { // 200状态但响应内容为空时,直接返回空数组 successCallback([]); } } }) }, color: '#a1a535', textColor: 'white' } ]
内容的提问来源于stack exchange,提问作者21J
相关产品推荐
相关产品推荐

