Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX在插入之前添加多个事件重置Id_Javascript_Jquery_Ajax_Fullcalendar - Fatal编程技术网

Javascript AJAX在插入之前添加多个事件重置Id

Javascript AJAX在插入之前添加多个事件重置Id,javascript,jquery,ajax,fullcalendar,Javascript,Jquery,Ajax,Fullcalendar,在完整日历中,我有一些可拖放的外部项目。当我拖放其中一个并立即删除它时,它会被删除,一切正常。然而,当我删除多个项目时,例如2个项目,当我删除其中2个项目时,这两个项目都会从视图中的日历中删除,实际上有一个项目会从数据库中删除,如果我刷新页面,我可以看到这一点 当我检查表单input hidden的值时,它是从数据库获取的事件id,或者是通过ajax从数据库返回的作为最后一个insert id的事件id,两者看起来是相同的,实际上它们是不同的 我想我需要的是,在eventID变量被拖放后重置它们

在完整日历中,我有一些可拖放的外部项目。当我拖放其中一个并立即删除它时,它会被删除,一切正常。然而,当我删除多个项目时,例如2个项目,当我删除其中2个项目时,这两个项目都会从视图中的日历中删除,实际上有一个项目会从数据库中删除,如果我刷新页面,我可以看到这一点

当我检查表单input hidden的值时,它是从数据库获取的事件id,或者是通过ajax从数据库返回的作为最后一个insert id的事件id,两者看起来是相同的,实际上它们是不同的

我想我需要的是,在eventID变量被拖放后重置它们。我试着把它们初始化为空的,但没用

在ajax提交下一个单元后,如何重置它们的值,从而使该变量保持连接到当前单元。这也是一个全局变量,我认为这就是问题所在

我的代码:

var eventID; // global variable
下降功能:

drop: function(date, allDay) { 
var originalEventObject = $(this).data('eventObject');
        // we need to copy it, so that multiple events don't have a reference to the same object
        var copiedEventObject = $.extend({}, originalEventObject);

        // assign it the date that was reported

        copiedEventObject.start = date;

        if($extraEventClass) copiedEventObject['className'] = [$extraEventClass];

        var tempDate = new Date(date);
        copiedEventObject.start = $.fullCalendar.formatDate(copiedEventObject.start, "yyyy-MM-dd HH:mm:ss");
        eventID = '';
        $.ajax({
            url: '<?=site_url("admin/calendar/add");?>',
            data: 'title='+ copiedEventObject.title,
            type: "POST",
            success: function(newID){
                eventID = newID;
                //copiedEventObject._id = newID;
            }
        });
  calendar.fullCalendar('renderEvent',
            {
                title: copiedEventObject.title,
                start: date,
               //id: copiedEventObject._id,
                id: eventID,
            }),
            true // make the event "stick"
 }
eventClick: function(calEvent, jsEvent, view) {
        if(!eventID){
            eventID = calEvent._id;
        }
        var form = $("<form id='changeName'>" +
            "<h3 class='eventHeader'>Edit</h3>" +
            "</div></form>");
        form.append("<div class='controls'>" +
            "<label class='control-label' for='title'>Name: </label>" +
            "<input class='span3' name='title' autocomplete=off type='text' value='" + calEvent.title + "' />" +
            "</div>");
        form.append("<input type=hidden value='" + eventID + "' /> ");
        form.append("<div class='controls'>" +
            "<button type='submit'> Save </button>");

var div = bootbox.dialog(form,
   [
     {
       "label" : "Delete",
       "callback": function() {
          deleteOrNot = confirm("Sure ??");
            if (deleteOrNot) {
              calendar.fullCalendar('removeEvents' , function(ev){
                $.ajax({
                  url: '<?=site_url("admin/calendar/delete");?>',
                  data: 'id='+ eventID,
                  type: "POST"
                });
                 return (ev._id == calEvent._id);
                })
              }
            }
          }
        ]);

        $("#changeName").submit(function() {
            calEvent.title = form.find("input[name=title]").val();
            calEvent.description = form.find("input[name=description]").val();
            calEvent.id = form.find("input[type=hidden]").val();
            $.ajax({
                url: '<?=site_url("admin/calendar/editTitle");?>',
                data: 'title='+ calEvent.title+'&id='+ calEvent.id,
                type: "POST"
            });
            calendar.fullCalendar('updateEvent', calEvent);
            div.modal("hide");
            return false;
        });
   }
drop:function(日期,全天){
var originalEventObject=$(this.data('eventObject');
//我们需要复制它,这样多个事件就不会引用同一个对象
var copiedEventObject=$.extend({},originalEventObject);
//将其指定为报告的日期
copiedEventObject.start=日期;
如果($extraEventClass)CopiedEventToObject['className']=[$extraEventClass];
var tempDate=新日期(日期);
copiedEventObject.start=$.fullCalendar.formatDate(copiedEventObject.start,“yyyy-MM-dd HH:MM:ss”);
eventID='';
$.ajax({
url:“”,
数据:“title=”+copiedEventObject.title,
类型:“POST”,
成功:函数(newID){
eventID=newID;
//copiedEventObject.\u id=newID;
}
});
日历。完整日历('renderEvent',
{
标题:copiedEventObject.title,
开始日期:,
//id:copiedEventObject.\u id,
id:eventID,
}),
true//使事件“持续”
}
事件单击功能:

drop: function(date, allDay) { 
var originalEventObject = $(this).data('eventObject');
        // we need to copy it, so that multiple events don't have a reference to the same object
        var copiedEventObject = $.extend({}, originalEventObject);

        // assign it the date that was reported

        copiedEventObject.start = date;

        if($extraEventClass) copiedEventObject['className'] = [$extraEventClass];

        var tempDate = new Date(date);
        copiedEventObject.start = $.fullCalendar.formatDate(copiedEventObject.start, "yyyy-MM-dd HH:mm:ss");
        eventID = '';
        $.ajax({
            url: '<?=site_url("admin/calendar/add");?>',
            data: 'title='+ copiedEventObject.title,
            type: "POST",
            success: function(newID){
                eventID = newID;
                //copiedEventObject._id = newID;
            }
        });
  calendar.fullCalendar('renderEvent',
            {
                title: copiedEventObject.title,
                start: date,
               //id: copiedEventObject._id,
                id: eventID,
            }),
            true // make the event "stick"
 }
eventClick: function(calEvent, jsEvent, view) {
        if(!eventID){
            eventID = calEvent._id;
        }
        var form = $("<form id='changeName'>" +
            "<h3 class='eventHeader'>Edit</h3>" +
            "</div></form>");
        form.append("<div class='controls'>" +
            "<label class='control-label' for='title'>Name: </label>" +
            "<input class='span3' name='title' autocomplete=off type='text' value='" + calEvent.title + "' />" +
            "</div>");
        form.append("<input type=hidden value='" + eventID + "' /> ");
        form.append("<div class='controls'>" +
            "<button type='submit'> Save </button>");

var div = bootbox.dialog(form,
   [
     {
       "label" : "Delete",
       "callback": function() {
          deleteOrNot = confirm("Sure ??");
            if (deleteOrNot) {
              calendar.fullCalendar('removeEvents' , function(ev){
                $.ajax({
                  url: '<?=site_url("admin/calendar/delete");?>',
                  data: 'id='+ eventID,
                  type: "POST"
                });
                 return (ev._id == calEvent._id);
                })
              }
            }
          }
        ]);

        $("#changeName").submit(function() {
            calEvent.title = form.find("input[name=title]").val();
            calEvent.description = form.find("input[name=description]").val();
            calEvent.id = form.find("input[type=hidden]").val();
            $.ajax({
                url: '<?=site_url("admin/calendar/editTitle");?>',
                data: 'title='+ calEvent.title+'&id='+ calEvent.id,
                type: "POST"
            });
            calendar.fullCalendar('updateEvent', calEvent);
            div.modal("hide");
            return false;
        });
   }
event单击:函数(calEvent、jsEvent、view){
如果(!eventID){
eventID=calEvent.\u id;
}
变量形式=$(“”+
“编辑”+
"");
格式。追加(“”)+
“姓名:”+
"" +
"");
格式.附加(“”);
格式。追加(“”)+
“保存”);
var div=bootbox.dialog(形式,
[
{
“标签”:“删除”,
“回调”:函数(){
deleteOrNot=确认(“确定”);
如果(删除或不删除){
calendar.fullCalendar('removeEvents',函数(ev){
$.ajax({
url:“”,
数据:“id=”+eventID,
类型:“职位”
});
返回(ev.\U id==calEvent.\U id);
})
}
}
}
]);
$(“#changeName”).submit(函数(){
calEvent.title=form.find(“输入[name=title]”).val();
calEvent.description=form.find(“输入[name=description]”).val();
calEvent.id=form.find(“输入[type=hidden]”).val();
$.ajax({
url:“”,
数据:'title='+calEvent.title+'&id='+calEvent.id,
类型:“职位”
});
calendar.fullCalendar('updateEvent',calEvent);
模态分类(“隐藏”);
返回false;
});
}

在删除过程中……您不应该依赖全局
事件ID
,而应该仅从特定事件获取ID

更改:

if(!eventID){
    eventID = calEvent._id;
} 
致:

我怀疑您在每次删除多个时使用全局
eventID
drop
中也会遇到问题。必须看看这里的一些方法做了什么

我的建议是完全去掉全局
eventID
。添加时,等待服务器返回id,然后在成功回调中将数据传递给fullCalandar


类似地,在deleteOrNot中,应该首先发出ajax请求,然后只调用
calendar.fullCalendar('removeEvents'
$.ajax的成功回调中。这将在用户看到事件被删除之前确认ajax成功。如果ajax失败,用户将不知道使用您的方法当我从eventID全局变量中删除时,复制对象的id不能像我尝试的那样设置。还添加了方法部分。好的……问题是
AJAX
是异步的…在成功回调中移动
calendar.fullCalendar('renderEvent',
,否则它会在AJAX完成之前触发只是需要始终思考…“确保在更新用户界面之前更新数据库”再次非常感谢,感谢您,很高兴有这样的体验。