Jquery $ .map函数给出错误

时间:2014-04-04 12:45:24

标签: javascript jquery fullcalendar

我有以下代码将事件映射到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

我该怎么做?

1 个答案:

答案 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);
},

问题中显示的错误消息似乎对提供的代码没有意义。