javascript - 未捕获的类型错误 : object is not a function in Fullcalendar

标签 javascript jquery fullcalendar

当某些东西被删除时,我试图让 fullcalendar 渲染来 self 的数据库的数据。我可以看到数据是通过ajax正确传递的。但是当调用回调时,我收到错误消息Uncaught TypeError: object is not a function

下面是我的代码:

   drop: function (start, end, timezone, callback) {
        var resource_id = $(this).attr('id');
        var id = resource_id.substring(resource_id.lastIndexOf('_') + 1, resource_id.length);
        var events_uri = '/get_resource_events';
        $.ajax({
            url: resource_base_url() + events_uri,
            data: {
                id: id
            },
            type: "GET",
            dataType: 'json',
            success: function(data) {
                var events = [];
                for (order in data) {
                    var allday_data = data[order].allday;
                    if (allday_data === 'true') {
                        allday_data = true;
                    } else {
                        allday_data = false;
                    };
                    events.push({
                        id: data[order].id,
                        title: [data[order].initials] + [data[order].last_name],
                        start: data[order].start,
                        end: data[order].end,
                        allDay: allday_data,
                        color: data[order].calendar_color
                    });
                };
                callback(events);
                $('#calendar').fullCalendar('rerenderEvents');
            }
        });
    }

有人有解决错误消息的建议吗?

在ajax结果下方,进行回调

[{"id":"136","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-05 09:00:00","end":"2014-08-05 13:00:00","allday":null,"calendar_color":"#00ffff"},{"id":"138","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-04 09:00:00","end":"2014-08-04 13:00:00","allday":null,"calendar_color":"#00ffff"},{"id":"139","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-07 07:30:00","end":"2014-08-07 11:30:00","allday":null,"calendar_color":"#00ffff"},{"id":"142","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-06 00:00:00","end":"0000-00-00 00:00:00","allday":null,"calendar_color":"#00ffff"},{"id":"143","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-06 11:30:00","end":"2014-08-06 15:30:00","allday":null,"calendar_color":"#00ffff"},{"id":"155","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-10 09:00:00","end":"2014-08-10 13:00:00","allday":null,"calendar_color":"#00ffff"},{"id":"170","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-28 10:00:00","end":"2014-08-28 15:00:00","allday":null,"calendar_color":"#00ffff"},{"id":"171","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-26 08:00:00","end":"2014-08-26 12:30:00","allday":null,"calendar_color":"#00ffff"},{"id":"175","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-30 07:00:00","end":"2014-08-30 14:30:00","allday":null,"calendar_color":"#00ffff"},{"id":"183","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-29 07:30:00","end":"2014-08-29 13:00:00","allday":null,"calendar_color":"#00ffff"}]

我尝试了您描述的解决方案,但仍然收到相同的错误消息对象不是函数。下面你可以找到完整的 JS 文件。还有其他建议吗?

$(document).ready(function() { 

function resource_base_url() {
    return base_url() + '/resource_controller/';
}

/* initialize the calendar
-----------------------------------------------------------------*/
$('#calendar').fullCalendar({
    firstDay: 1, // Sunday=0, Monday=1, Tuesday=2, etc.
    aspectRatio: 2.5,
    eventTextColor: 'black',
    theme: true, // false, true
    handleWindowResize: true,
    editable: true,
    droppable: true, // this allows things to be dropped onto the calendar !!!
            // Determines which icons are displayed in buttons of the header when theming is on.
    themeButtonIcons:{ // Check http://api.jqueryui.com/theming/icons/ for avalible icon names
        prev: 'ui-icon ui-icon-circle-triangle-w',
        next: 'ui-icon ui-icon-circle-triangle-e'
    },
    header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay'
    },       
    //events: calendar_base_url() + '/events',        
    eventRender: function(event, element, view) {
        if (event.allDay === 'true') {
            event.allDay = true;
        } else {
            event.allDay = false;
        }
    },
    drop: function (start, end, timezone, callback) {
        var resource_id = $(this).attr('id');
        var id = resource_id.substring(resource_id.lastIndexOf('_') + 1, resource_id.length);
        var events_uri = '/get_resource_events';
        $.ajax({
            url: resource_base_url() + events_uri,
            data: {
                id: id
            },
            type: "GET",
            dataType: 'json',
            success: function(data) {
                $.each(data, function(key, val){
                    var events = [];
                    var allday_data = val.allday;
                    if (allday_data === 'true') {
                        allday_data = true;
                    } else {
                        allday_data = false;
                    };
                    events.push({
                        id: val.id,
                        title: val.initials + val.last_name,
                        start: val.start,
                        end: val.end,
                        allDay: allday_data,
                        color: val.calendar_color
                    });
                callback(events);
                $('#calendar').fullCalendar('rerenderEvents');
                });
            }
        });
    }    
});

});

最佳答案

您尝试通过 json 对象进行循环,请尝试对每个函数都这样做。 希望有帮助

您必须像这样将事件放在窗口的全局范围内

      <script> 
        var events = new Array();
      </script>

以及文档就绪功能中的所有功能。

 drop: function (start, end, timezone, callback) {
    var resource_id = $(this).attr('id');
    var id = resource_id.substring(resource_id.lastIndexOf('_') + 1, resource_id.length);
    var events_uri = '/get_resource_events';
    $.ajax({
        url: resource_base_url() + events_uri,
        data: {
            id: id
        },
        type: "GET",
        dataType: 'json',
        success: function(data) {
            $.each(data, function(key, val){
               var events = [];

                   var allday_data = val.allday;
                   if (allday_data === 'true') {
                       allday_data = true;
                   } else {
                       allday_data = false;
                   };
                   events.push({
                       id: val.id,
                       title: val.initials + val.last_name,
                       start: val.start,
                       end: val.end,
                      allDay: allday_data,
                      color: val.calendar_color

                  });

              callback(events);
              $('#calendar').fullCalendar('rerenderEvents');
             )}
          }
    });
}

这是工作示例:

var events = new Array();
$(document).ready(function(){

        var data = [{"id":"136","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-05 09:00:00","end":"2014-08-05 13:00:00","allday":null,"calendar_color":"#00ffff"},{"id":"138","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-04 09:00:00","end":"2014-08-04 13:00:00","allday":null,"calendar_color":"#00ffff"},{"id":"139","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-07 07:30:00","end":"2014-08-07 11:30:00","allday":null,"calendar_color":"#00ffff"},{"id":"142","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-06 00:00:00","end":"0000-00-00 00:00:00","allday":null,"calendar_color":"#00ffff"},{"id":"143","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-06 11:30:00","end":"2014-08-06 15:30:00","allday":null,"calendar_color":"#00ffff"},{"id":"155","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-10 09:00:00","end":"2014-08-10 13:00:00","allday":null,"calendar_color":"#00ffff"},{"id":"170","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-28 10:00:00","end":"2014-08-28 15:00:00","allday":null,"calendar_color":"#00ffff"},{"id":"171","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-26 08:00:00","end":"2014-08-26 12:30:00","allday":null,"calendar_color":"#00ffff"},{"id":"175","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-30 07:00:00","end":"2014-08-30 14:30:00","allday":null,"calendar_color":"#00ffff"},{"id":"183","initials":"M.H.","last_name":"Tjon-Sien-Fat","start":"2014-08-29 07:30:00","end":"2014-08-29 13:00:00","allday":null,"calendar_color":"#00ffff"}];

 $.each(data, function(key, val){


               var allday_data = val.allday;
               if (allday_data === 'true') {
                   allday_data = true;
               } else {
                   allday_data = false;
               };

               events.push({
                   id: val.id,
                   title: [val.initials] + [val.last_name],
                   start: val.start,
                   end: val.end,
                   allDay: allday_data,
                   color: val.calendar_color

              });

            })

      console.log(events);
   });

这是输出

  [Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]

  Object0: ObjectallDay: falsecolor: "#00ffff", end: "2014-08-05 13:00:00", id: "136", start: "2014-08-05 09:00:00", title: "M.H.Tjon-Sien-Fat";

关于javascript - 未捕获的类型错误 : object is not a function in Fullcalendar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596346/

相关文章:

javascript - AmCharts - 折线图溢出图形容器

即使删除所有事件,FullCalendar 也会插入重复事件

javascript - 为什么将 getElementById() 的结果存储到变量而不是每次都使用该函数?

javascript - app.js 中导入的 webpack 配置 : pixi. js 生成超过 2MB 的分发文件

javascript - 在多个事件上触发函数

jquery - 使用jquery检查多个复选框

jquery - $ ("#fullcalendar").fullCalendar 不是函数

javascript - 带 rrule 的全日历重复事件不起作用

php - 为什么我不能在 js 中这样做

javascript - 没有框架的HTML页面源代码