我有以下代码将事件映射到FullCalendar
events: function(start, end, callback)
{
$.ajax(
{
type: 'POST',
dataType: 'json',
url: "Calendar.aspx/GetEvents",
contentType: 'application/json; charset=utf-8',
cache: false,
success: function (response) {
var events = [];
$.map(response.d, function (item) {
var event = new Object();
event.id = item.EventID;
event.start = new Date(item.StartDate);
event.end = new Date(item.EndDate);
event.title = item.EventName;
return event;
events.push(event);
})
callback(events);
},
error: function (err) {
alert('Error');
}
});
},
Calendar.aspx / GetEvents函数成功返回以下数据:
"[{"EventID":1,"EventName":"EventName 1","StartDate":"04-04-2014","EndDate":"04-06-2014"},{"EventID":2,"EventName":"EventName 2","StartDate":"04-08-2014","EndDate":"04-09-2014"},{"EventID":3,"EventName":"EventName 3","StartDate":"04-14-2014","EndDate":"04-15-2014"},{"EventID":4,"EventName":"EventName 4","StartDate":"04-26-2014","EndDate":"04-29-2014"}]"
我想迭代这些数据并将其分配给日历。
我上面的$ map函数给出了以下错误:
无法在运算符中使用[{“EventID”:1,“EventName”:“EventName 1”,“StartDate”:“04-04-2014”,“EndDate 搜索352
我该怎么做?
答案 0 :(得分:1)
您错误地使用了$.map
。关键在于它创建一个数组,所以不需要在循环之前创建一个数组并且.push()
进入它。
您应该保留return
声明,移除.push
,并将$.map
的返回值设置为events
变量。
success: function (response) {
var events = $.map(response.d, function (item) {
var event = new Object();
event.id = item.EventID;
event.start = new Date(item.StartDate);
event.end = new Date(item.EndDate);
event.title = item.EventName;
return event;
});
callback(events);
},
但是,对象文字语法更好。
success: function (response) {
var events = $.map(response.d, function (item) {
return {
id: item.EventID,
start: new Date(item.StartDate),
end: new Date(item.EndDate),
title: item.EventName,
};
});
callback(events);
},
问题中显示的错误消息似乎对提供的代码没有意义。