Jquery 作为部分加载时,FullCalendar会呈现,但不会激活任何触发器。没有加载任何数据
更新2017/03/29 18:00 经过多次尝试,我发现如果页面加载时“日历”选项卡是活动选项卡,那么它会正确加载,但是,当页面不是活动选项卡时,我会收到rangeStart错误,并且不会加载任何数据 虽然不清楚为什么,我至少可以让它工作…有点Jquery 作为部分加载时,FullCalendar会呈现,但不会激活任何触发器。没有加载任何数据,jquery,razor,asp.net-mvc-5,fullcalendar,Jquery,Razor,Asp.net Mvc 5,Fullcalendar,更新2017/03/29 18:00 经过多次尝试,我发现如果页面加载时“日历”选项卡是活动选项卡,那么它会正确加载,但是,当页面不是活动选项卡时,我会收到rangeStart错误,并且不会加载任何数据 虽然不清楚为什么,我至少可以让它工作…有点 更新2017/03/29 16:00 我们取得了进展,幸运的是通过StackOverflow显然。。。 首先,我发现了两个附加的帖子: 这让我认识到,数据需要被称为异步的 另一个职位: 然后给我提示如何呈现返回的JSON(我的c#控制器返回JS
更新2017/03/29 16:00 我们取得了进展,幸运的是通过StackOverflow显然。。。 首先,我发现了两个附加的帖子: 这让我认识到,数据需要被称为异步的 另一个职位: 然后给我提示如何呈现返回的JSON(我的c#控制器返回JSON数据) 因此,我修改了我的代码如下:
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
//defaultDate: moment().format("DD/MM/YYYY"),
timeFormat: 'HH(:mm)',
defaultView: 'month',
editable: true,
allDaySlot: false,
selectable: true,
slotMinutes: 15,
events: function (start, end, timezone, callback) {
$.ajax({
url: '@Url.Action("GetDiaryEvents", "Calendar")',
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: {
// our hypothetical feed requires UNIX timestamps
start: start.format(),
end: end.format()
},
success: function(events)
{
//debugger;
$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('addEventSource', events);
$('#calendar').fullCalendar('rerenderEvents' );
}
@{
ViewBag.Title = "Main";
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - Some Application</title>
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/datatables")
@Styles.Render("~/Content/css")
@Styles.Render("~/Content/themes/base/css")
@Styles.Render("~/Content/datatables")
但是,它工作得很好……只有当日历
页面设置为活动页面时,它才会这样做。如果它不是活动页面,数据不会被加载,甚至在从月->周->日切换视图时也不会加载数据
加载完整的Index.cshtml
页面后,它仍然会给出rangeStart
错误,并且不会加载任何数据,也不会呈现任何日历
在JQuery选项卡调用中添加“渲染调用”可以解决页面上的“无渲染”问题。但仍然无法解决无数据问题:
我发现这个帖子:
这表明我的标准VS2015 jquery-3.1.1.js将是罪魁祸首,有人能证实吗
问题: 作为部分加载时,FullCalendar会呈现,但不会激活任何触发器。 没有加载任何数据 使用
- 引导程序3.3.7
- MVC 5.2.3.0
- 全压光机3.0.0
- jquery-3.1.1
- jquery-ui-1.12.1
- VS2015中的C#
的页面是一个cshtml,用于在选项卡式布局下作为部分加载
在选项卡Index.cshtml
的\u Layout.cshtml
中,所有主要的js/css都按照以下方式加载:
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
//defaultDate: moment().format("DD/MM/YYYY"),
timeFormat: 'HH(:mm)',
defaultView: 'month',
editable: true,
allDaySlot: false,
selectable: true,
slotMinutes: 15,
events: function (start, end, timezone, callback) {
$.ajax({
url: '@Url.Action("GetDiaryEvents", "Calendar")',
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: {
// our hypothetical feed requires UNIX timestamps
start: start.format(),
end: end.format()
},
success: function(events)
{
//debugger;
$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('addEventSource', events);
$('#calendar').fullCalendar('rerenderEvents' );
}
@{
ViewBag.Title = "Main";
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - Some Application</title>
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/datatables")
@Styles.Render("~/Content/css")
@Styles.Render("~/Content/themes/base/css")
@Styles.Render("~/Content/datatables")
\u prtCalendar.cshtml
有一个加载日历的$(document).ready(function(){
部分。Index.cshtml(文档的一部分)还有一个$(document).ready(function(){
)部分
该部分中的JQuery FullCalendar都是通过@Url.Action(',“Calendar”)
诀窍
如果我直接加载\u prtCalendar.cshtml
,
i、 e.我直接在\u prtCalendar.cshtml
页面中加载所有js/css,并在没有\u Layout.cshtml
和Index.cshtml
的情况下显示,所有工作正常,CalendarController
中的所有函数都被正确调用
但是,如果我将\u prtCalendar.cshtml
作为部分加载,则似乎出现了问题,没有加载任何内容,我会收到一个JS错误:
TypeError:rangeStart未定义[了解更多信息]
fullcalendar.js:11023:6
现在,我假设这是因为rangeStart
显然没有正确设置,但是我似乎无法确定为什么不设置
\u prtCalendar.cshtml
在尝试$(文档)之前先加载fullcalendar.js
和moment.min.js
。就绪
通过以下行调用
<link href="~/Content/fullcalendar.css" rel="stylesheet" />
<script type="text/javascript" src="~/Scripts/lib/moment.min.js"></script>
<script type="text/javascript" src="~/Scripts/fullcalendar.js"></script>
如果我使用F12调试器,我可以看到调用了$(“#calendar”)
函数,但在rangeStart
调用中失败。
当从Index.cshmtl
调用时,其他选项卡(在相同的Index.cshmtl
中)上引用不同控制器的其他按钮将被正确调用
任何帮助都非常欢迎…:-)好的,答案太简单了…真的 在
$(文档)的底部。ready
是一行,上面写着:
CalLoading = false;
改为:
CalLoading = true;
这似乎解决了问题……好吧,答案太简单了……真的 在
$(文档)的底部。ready
是一行,上面写着:
CalLoading = false;
改为:
CalLoading = true;
这似乎解决了问题