Jquery $.map 函数给出错误

Jquery $.map function giving error

本文关键字:出错 错误 函数 map Jquery      更新时间:2023-09-26

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

日历.aspx/获取事件函数成功返回以下数据:

"[{"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函数给了我以下错误:

不能在运算符中使用在 [{"事件 ID":1,"事件名称":"事件名称 1","开始日期":"04-04-2014","结束日期"中搜索 352

我该怎么做??

您不正确地使用了$.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);
},

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

相关文章: