第一次尝试无法从完整日历中删除事件

Posted

技术标签:

【中文标题】第一次尝试无法从完整日历中删除事件【英文标题】:Unable to delete an event from full calendar in the first attempt 【发布时间】:2016-03-19 04:47:07 【问题描述】:

我有一个 Bootstrap 模式插件,我试图从中删除在 FullCalendar 中创建的事件。在我第一次尝试删除期间,该事件从日历视图中消失,但 mysql 条目没有被删除。我注意到的原因是calEvent.id 在我最初的删除尝试中没有得到值,但在第二次尝试中calEvent.id 有一个值,我可以成功删除事件。我想知道为什么calEvent.id 在第一次尝试时无法获取事件 ID。使用我在第一次尝试时注意到的警告框,我得到一个结果“未定义”,我猜这是因为没有值即将到来calEvent.id。请在下面找到我的脚本。

$('#event_delete').on('click', function ()                     
    $('#calendar').fullCalendar('removeEvents', calEvent.id);

    $.ajax(
           data: "&id=" + calEvent.id,
           type: "POST",
           url: "http://localhost/book/js/delete_events.php"                    
    );
    alert (calEvent.id);
    CloseModalBox();
);

--------------delete_events.php-----------

<?php
try 
    $bdd = new PDO('mysql:host=localhost;dbname=fullcalendar', 'root', '');
 catch(Exception $e) 
    exit('Unable to connect to database.');

$id = $_POST['id'];
$sql = "DELETE from evenement WHERE id=".$id;
$q = $bdd->prepare($sql);
$q->execute();
?>

【问题讨论】:

delete_events.php中也显示PHP代码 对不起,我现在添加了 RiggsFolly。谢谢 【参考方案1】:

您可以调用 $('#calendar').fullCalendar('refetchEvents'),而不是重新加载整个页面。它将从您的数据库中获取所有事件并重新呈现它们。

【讨论】:

【参考方案2】:

数据应该像这样传递:-

$('#event_delete').on('click', function ()                     
    $('#calendar').fullCalendar('removeEvents', calEvent.id);

    $.ajax(
           data: id: calEvent.id,
           type: "POST",
           url: "http://localhost/book/js/delete_events.php"                    
          );
          alert (calEvent.id);
          CloseModalBox();
);

【讨论】:

感谢 RiggsFolly 的快速回复。我注意到,calEvent.id 即使在更改后仍然没有获得价值。一种解决方法(不确定它是否是推荐的方法)是刷新整个页面,然后我可以获得 calEvent.id 的值 刚刚注意到一件事。只有当我倾向于删除刚创建的项目时才会发生这种情况。如果该项目之前已创建(在上一页刷新之前),则 calEvent.id 具有该项目的值。 我不知道你是从哪里得到 calEvent.id 的,但是当一个新事件被添加到日历中时,这听起来像是设置的方式有问题 嘿 RiggsFolly,我想我在代码中犯了一个错误。我试图查找仅在 mySQL 中生成的 calEvent.id。在创建事件时,mySQL 正在创建一个 id,并且每次刷新 php 页面时,完整的日历都会收到该 id(我有一个事件在页面加载期间从 mySQL 加载数据。)。为了解决我当前的问题,我通过在成功提交到 mySQL DB 期间刷新 php 页面来解决我的问题,这将强制每次从 mySQL DB 获取数据。你在你最后的陈述中放弃了帮助我弄清楚的线索。谢了哥们 !为此 +1。

以上是关于第一次尝试无法从完整日历中删除事件的主要内容,如果未能解决你的问题,请参考以下文章

EventKit 日历的最后一个事件

每年将生日事件添加到 jQuery 完整日历中

带有谷歌日历的完整日历

带有 EKEvents 的 PromiseKit - 询问用户访问日历事件的权限

FullCalendar,我如何允许用户编辑/删除事件并将它们从数据库中删除?

Swift 4.0 Eventkit 无法正确获取日历和事件