jquery 使用 MVC 和 JSON 的 FullCalendar
jquery FullCalendar using MVC and JSON
我只是想做一些非常简单的事情。
我正在使用在此处找到的 jQuery FullCalendar:http://fullcalendar.io/
当我将事件数据添加为数组时(如文档示例提供的那样),日历会填充。但是,当我尝试通过 jQuery 执行此操作时,我得到了有效的 JSON 响应,但事件并未填充。
$(document).ready(function () {
// page is now ready, initialize the calendar...
$('#calendar').fullCalendar({
events: {
url: '../calendar/GetCalendarData',
type: 'GET',
data: {},
success: function (doc) {
//alert(doc.title + ' ' + doc.start);
var events = [];
events.push(doc);
alert(events[0].title + ' ' + events[0].start);
},
error: function() {
alert('there was an error while fetching events!');
},
color: 'yellow', // a non-ajax option
textColor: 'black' // a non-ajax option
}
});
// Code and Documents: http://fullcalendar.io/
});
[HttpPost]
public ActionResult PostCalendarData()
{
return Json(new { title = "Free Pizza", allday = "false", borderColor = "#5173DA", color = "#99ABEA", textColor = "#000000", description = "<p>This is just a fake description for the Free Pizza.</p><p>Nothing to see!</p>", start = "2015-01-04T22:00:49", end = "2015-01-01", url = "http=//www.mikesmithdev.com/blog/worst-job-titles-in-internet-and-info-tech/" });
}
[HttpGet]
public ActionResult GetCalendarData()
{
return Json(new { title = "Free Pizza", allday = "false", borderColor = "#5173DA", color = "#99ABEA", textColor = "#000000", description = "<p>This is just a fake description for the Free Pizza.</p><p>Nothing to see!</p>", start = "2015-01-04T22:00:49", end = "2015-01-01", url = "http=//www.mikesmithdev.com/blog/worst-job-titles-in-internet-and-info-tech/" }, JsonRequestBehavior.AllowGet);
}
我从 GetCalendarData 调用中得到的响应如下:
{"title":"Free Pizza","allday":"false","borderColor":"#5173DA","color":"#99ABEA","textColor":"#000000","description":"\u003cp\u003eThis is just a fake description for the Free Pizza.\u003c/p\u003e\u003cp\u003eNothing to see!\u003c/p\u003e","start":"2015-01-04T22:00:49","end":"2015-01-01","url":"http=//www.mikesmithdev.com/blog/worst-job-titles-in-internet-and-info-tech/"}
我在 Stack 上看到其他人也有类似的问题,但我没有看到有关如何在此日历中使用 AJAX 和 JSON 的示例。
我也尝试使用 eventSources: documentation/example 得到相同的结果。
更新:
我根据我尝试过的不同事情更新了我的代码。仍然没有运气。我看过日期格式。我已经尝试过系统生成的日期,但我所看到的一切似乎都指向基于字符串的日期(这是我在更新的代码中尝试过的)。不幸的是,这仍然不起作用(至少对我而言)。
仍在寻求帮助。
答案在函数参数中。一旦将这些放入日历中,数据就会填充。
$(document).ready(function () {
var events = [];
$('#calendar').fullCalendar({
events: function(start, end, timezone, callback) {
$.ajax({
url: source,
type: 'POST',
data: { },
success: function (doc) {
events.push(doc);
callback(events);
}
});
}
});
});
我不知道这对您来说是否仍然是个问题,但我确实设法让它对我有用。我几乎有一个确切的案例。
这是我的例子:
[HttpGet]
public JsonResult SerializeEvent(int id)
{
var sesh = Umbraco.TypedContent(id).Descendants("courseSession");
var eventList = new List<EventModel>();
foreach (var item in sesh)
{
var eventObj = new EventModel();
eventObj.start = item.GetPropertyValue<DateTime>("startDate").ToString("yyyy-MM-dd");
eventObj.end = item.GetPropertyValue<DateTime>("endDate").ToString("yyyy-MM-dd");
eventObj.title = item.Parent.Name;
eventObj.url = item.Parent.Url;
eventList.Add(eventObj);
}
return Json(eventList, JsonRequestBehavior.AllowGet);
}
对我来说不同的是将方法 return 类型从 ActionResult
更改为 JsonResult
并将第二个参数“JsonRequestBehavior.AllowGet
”添加到 return函数。
希望对您有所帮助。
我只是想做一些非常简单的事情。
我正在使用在此处找到的 jQuery FullCalendar:http://fullcalendar.io/
当我将事件数据添加为数组时(如文档示例提供的那样),日历会填充。但是,当我尝试通过 jQuery 执行此操作时,我得到了有效的 JSON 响应,但事件并未填充。
$(document).ready(function () {
// page is now ready, initialize the calendar...
$('#calendar').fullCalendar({
events: {
url: '../calendar/GetCalendarData',
type: 'GET',
data: {},
success: function (doc) {
//alert(doc.title + ' ' + doc.start);
var events = [];
events.push(doc);
alert(events[0].title + ' ' + events[0].start);
},
error: function() {
alert('there was an error while fetching events!');
},
color: 'yellow', // a non-ajax option
textColor: 'black' // a non-ajax option
}
});
// Code and Documents: http://fullcalendar.io/
});
[HttpPost]
public ActionResult PostCalendarData()
{
return Json(new { title = "Free Pizza", allday = "false", borderColor = "#5173DA", color = "#99ABEA", textColor = "#000000", description = "<p>This is just a fake description for the Free Pizza.</p><p>Nothing to see!</p>", start = "2015-01-04T22:00:49", end = "2015-01-01", url = "http=//www.mikesmithdev.com/blog/worst-job-titles-in-internet-and-info-tech/" });
}
[HttpGet]
public ActionResult GetCalendarData()
{
return Json(new { title = "Free Pizza", allday = "false", borderColor = "#5173DA", color = "#99ABEA", textColor = "#000000", description = "<p>This is just a fake description for the Free Pizza.</p><p>Nothing to see!</p>", start = "2015-01-04T22:00:49", end = "2015-01-01", url = "http=//www.mikesmithdev.com/blog/worst-job-titles-in-internet-and-info-tech/" }, JsonRequestBehavior.AllowGet);
}
我从 GetCalendarData 调用中得到的响应如下:
{"title":"Free Pizza","allday":"false","borderColor":"#5173DA","color":"#99ABEA","textColor":"#000000","description":"\u003cp\u003eThis is just a fake description for the Free Pizza.\u003c/p\u003e\u003cp\u003eNothing to see!\u003c/p\u003e","start":"2015-01-04T22:00:49","end":"2015-01-01","url":"http=//www.mikesmithdev.com/blog/worst-job-titles-in-internet-and-info-tech/"}
我在 Stack 上看到其他人也有类似的问题,但我没有看到有关如何在此日历中使用 AJAX 和 JSON 的示例。
我也尝试使用 eventSources: documentation/example 得到相同的结果。
更新:
我根据我尝试过的不同事情更新了我的代码。仍然没有运气。我看过日期格式。我已经尝试过系统生成的日期,但我所看到的一切似乎都指向基于字符串的日期(这是我在更新的代码中尝试过的)。不幸的是,这仍然不起作用(至少对我而言)。
仍在寻求帮助。
答案在函数参数中。一旦将这些放入日历中,数据就会填充。
$(document).ready(function () {
var events = [];
$('#calendar').fullCalendar({
events: function(start, end, timezone, callback) {
$.ajax({
url: source,
type: 'POST',
data: { },
success: function (doc) {
events.push(doc);
callback(events);
}
});
}
});
});
我不知道这对您来说是否仍然是个问题,但我确实设法让它对我有用。我几乎有一个确切的案例。 这是我的例子:
[HttpGet]
public JsonResult SerializeEvent(int id)
{
var sesh = Umbraco.TypedContent(id).Descendants("courseSession");
var eventList = new List<EventModel>();
foreach (var item in sesh)
{
var eventObj = new EventModel();
eventObj.start = item.GetPropertyValue<DateTime>("startDate").ToString("yyyy-MM-dd");
eventObj.end = item.GetPropertyValue<DateTime>("endDate").ToString("yyyy-MM-dd");
eventObj.title = item.Parent.Name;
eventObj.url = item.Parent.Url;
eventList.Add(eventObj);
}
return Json(eventList, JsonRequestBehavior.AllowGet);
}
对我来说不同的是将方法 return 类型从 ActionResult
更改为 JsonResult
并将第二个参数“JsonRequestBehavior.AllowGet
”添加到 return函数。
希望对您有所帮助。