尝试添加工具提示时,FullCalendar返回“ Failure Parsing JSON”

时间:2019-05-05 18:38:52

标签: javascript php fullcalendar tooltip fullcalendar-4

  

要解决解析问题,我不得不添加tooltip.js和popper.js(我愚蠢的头忘记这样做了)

我现在的问题是它正在渲染事件,但是工具提示仍然不会在悬停或单击时渲染。

我目前正在尝试将悬停工具提示用于FullCalendar,但是我发现的所有操作方法示例(包括官方文档)都无法帮助我做到这一点。

每次加载页面时,它都会返回一个:

  

JSON解析失败

但是打开我的使用JSON馈送它的php文件会返回正确的json。 下面是我的日历页面上用于渲染日历的代码,如果我取出eventRender,它将正常工作。

document.addEventListener('DOMContentLoaded', function() {
        var calendarEl = document.getElementById('calendar');

        var calendar = new FullCalendar.Calendar(calendarEl, {
          plugins: [ 'dayGrid' ],
          defaultView: 'dayGridMonth',

          eventRender: function(info) {
                    var tooltip = new Tooltip(info.el, {
                      title: info.event.extendedProps.description,
                      placement: 'top',
                      trigger: 'hover',
                      container: 'body'
                     });
                   },

          eventSources: [
          {
            url: 'json-events-feed.php',
            type: 'POST' // Send post data
          }
          ]  
        });

        calendar.render();
      });

我的json-events-feed.php文件如下所示:

<?php
require( "config.php" );
try {

    $data = array();
    $data = Event::getList();
    $result_calendar['event'] = $data['results'];
    $result_calendar['totalRows'] = $data['totalRows'];

    $events = array();

    // Fetch results
    foreach ($result_calendar['event'] as $event) {
        $e = array();
        $e['id'] = $event->calendarDateID;
        $e['title'] = $event->title;
        $e['start'] = date( "Y-m-d", $event->eventDate );
        $e['end'] = date( "Y-m-d", $event->eventDate );
        $e['allDay'] = true;
        $e['description'] = "Testando essa bagaca";

        // Merge the event array into the return array
        array_push($events, $e);

    }

    // Output json for our calendar
    echo json_encode($events);
    exit();

} catch (PDOException $e){
    echo $e->getMessage();
}

?>

1 个答案:

答案 0 :(得分:1)

要解决解析问题,我必须添加tooltip.js和popper.js(我愚蠢的脑袋忘了这么做)

现在,对于渲染问题,我发现css元素没有使其不透明度增加,因此,它进行了DID渲染,我只是看不到它。我所做的就是这样设置标签:

<style>
.tooltip { opacity: 1; }
</style>