【发布时间】:2021-11-10 19:42:31
【问题描述】:
请原谅我的第一个问题和一般的经验不足。我正在使用 FullCalendar 5.10.1 返回与节日动态关联的事件。
此实例使用文档中的“事件(作为 json 提要)”模式。在所有情况下,如果有一个事件与动态选择的节日相关联,那么一切都很好。日历与事件正确显示。
但是,如果提要没有找到至少一个与节日选择相关的事件,则会立即返回失败回调。此时,控制台显示错误“解析 JSON 失败”。如果通过单击“确定”关闭失败回调消息,则按预期加载空日历。
很明显,我没有处理这种情况(无事件),但我不确定是否需要在提要 SQL 或 FullCalendar 代码中处理它。
请注意,这在 Bootstrap 选项卡内运行。我在这里留下了一些 hacky 代码,将 var 设置为日历选项卡的 id 并延迟日历加载以解决供应商主题的争用问题。
我很确定我没有以首选方式在这里显示代码,并且可能没有足够仔细地描述问题。但是对于这个新手的任何见解将不胜感激。
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
var calendarButton = document.getElementById('calendarButton');
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
themeSystem: 'bootstrap',
headerToolbar: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay'
},
weekNumberCalculation: "ISO",
initialView: 'dayGridMonth',
initialDate: '2021-07-01',
eventDidMount: function(info) {
$(info.el).tooltip({
title: info.event.extendedProps.description,
placement: 'top',
trigger: 'hover',
container: 'body'
});
},
eventSources: [
{
url: '/DesktopModules/XModPro/Feed.aspx',
method: 'POST',
datatype: 'JSON',
extraParams: {
pid: '0',
xfd: 'Events_FullCalendar_FestivalID',
FestivalID: '[[FestivalID]]'
},
failure: function() {
alert('There was an error while fetching events!');
},
color: '#a1a535', // a non-ajax option
textColor: 'white' // a non-ajax option
}
]
});
calendarButton.addEventListener('click', e => {
setTimeout(() => {calendar.render()}, 1);
});
});
</script>
馈送 SQL
<%@ Control Language="vb" AutoEventWireup="false" Inherits="KnowBetter.XModPro.FeedBase" %>
<%@ Register Assembly="KnowBetter.XModPro.Web.Controls" Namespace="KnowBetter.XModPro.Web.Controls" TagPrefix="xmod" %>
<xmod:masterview runat="server">
<xmod:JsonFeed runat="server">
<ListDataSource CommandText="SELECT
EventID AS 'id',
VenueID AS 'vid',
FestivalID,
EventTitle AS 'title',
EventDescription AS 'description',
EventStartTime AS 'start',
EventEndTime AS 'end'
FROM la360_Event
WHERE FestivalID = @FestivalID">
<Parameter Name = "FestivalID" value= '<%#FormData("FestivalID")%>' DataType="string" />
</ListDataSource>
</xmod:JsonFeed></xmod:masterview>
【问题讨论】:
-
您有机会更改(或请求更改)Feed 的代码吗?当没有事件时,它应该返回一个空数组。听起来目前它正在返回 null,这确实是一个设计缺陷。响应类型在所有情况下都应该是一致的。这是迄今为止解决此问题的最佳方法。
-
是的,我确实可以访问提要。我已经验证当前提要确实返回 null,而不是空数组 []。我已编辑问题以包含提要 SQL。我不清楚如何确保空数组与空数组的返回。到目前为止,搜索 SO 还没有提供任何见解。感谢您的帮助,并对已清理的原始格式问题表示歉意。
-
谢谢。 Feed.aspx 的代码在哪里?我认为不仅仅是那个数据源,否则它不会把它变成 JSON
-
上面的 SQL 是使用 CMS (DNN) 的插件 (XModPro) 编写的。此 SQL 所在的提要模块似乎继承了我无法引用的其他 XModPro 代码。不幸的。一个多星期前,我在他们的支持论坛上发布了这个问题,但没有任何回应。此时,它似乎是一个不受支持的模块。所以我担心我必须找到一个 hacky 工作。
-
您可以编写自己的小 asp.net 脚本来运行相同的查询,但将其正确转换为 JSON 吗?我不具体了解这个 CMS,但大多数都允许您添加自定义代码。
标签: javascript json ajax fullcalendar fullcalendar-5