将事件添加到数据库后,全日历重复事件

时间:2019-07-14 08:08:46

标签: javascript jquery ajax

我对全日历有疑问。我已经通过使用函数eventDrop将事件插入到数据库中,并且我想从数据库插入ID中为插入的事件库绑定一个ID,以便可以轻松跟踪更新。

问题是我在成功函数上渲染事件后,遇到事件数据重复的情况,如果我要警告它,则顶部数据具有ID,而当我警告它时,其他数据具有未定义的ID。我尝试搜索类似的解决方案:我尝试将渲染修改为$('#calendar').once('#calendar').fullCalendar('renderEvent',event'true);,结果很好,但是event.id.toString();未定义。

我还尝试过在渲染之前破坏日历:

$('#calendar').fullCalendar('destroy');
$('#calendar').fullCalendar('renderEvent',event,true);

它也不会复制我的事件,但是当我添加另一个事件时,则不会显示我的另一个事件。

我还尝试了$('#calendar').fullCalendar('renderEvent',event,false);,但仍不能解决问题。

这是我的完整代码:

 $('#calendar').fullCalendar({
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month'
            },
            editable: true,
            droppable: true, // This allows things to be dropped onto the calendar.            
            eventDrop: function(event,delta,revertFunc) {                
                let dropedDate = event.start.format("YYYY-MM-DD");
                let todayDate = $('#calendar').fullCalendar('getDate');
                let todayDateFormat = todayDate.format("YYYY-MM-DD");

                if(dropedDate < todayDateFormat) {
                    alert("Cannot move to previous dates.");
                    revertFunc();
                }else {
                    if(!confirm("Are you sure about this change?")) {
                        revertFunc();
                    }else {
                        editDrop(event);
                    }
                }
            },
            eventReceive: function(event,view) {                
                addDrop(event);
            },
            // events: [                
            //     {
            //         title: 'Long Event',
            //         start: new Date(y, m, d-5),
            //         end: new Date(y, m, d-2)
            //     },                
            // ]
        });

这是我的addDrop事件函数:

function addDrop(event) {
        let start = event.start.format("YYYY-MM-DD");

        $.ajax({
            url:siteurl+"dashboard_admin/Admin_Calendar/addCalendar",
            data:{"title":event.title,"eventDate":start},
            traditional:true,
            type:"POST",
            success: function(data) {                
                event = {
                    id: data.toString(),                    
                    title: event.title,
                    start: start,                    
                }
                $('#calendar').fullCalendar('renderEvent',event,true);
            }
        });   
    }

这是我的editDrop函数:

function editDrop(event) {        
        let start = event.start.format("YYYY-MM-DD");        
        let id = event.id;
        alert(id);

        $.ajax({
            url:siteurl+"dashboard_admin/Admin_Calendar/editCalendar",
            data:{"title":event.title,"eventDate":start},
            traditional:true,
            type:"POST",
            success: function(data) {

            }
        });
    }

0 个答案:

没有答案