Fullcalendar:Json没有反映在fullcalendar中

时间:2017-11-30 09:36:58

标签: php json fullcalendar

我正在尝试将外部php文件中的事件提取到完整的日历视图中。我曾经问过一个类似的问题,但我仍然在努力解决这个问题。

CODE(JS):

<script>
$(document).ready(function() {
        $('#ccategory').change(function(){
            var id = $(this).val();
            var user = $('#current_user').val();
            var calendar = $('#calendar').fullCalendar({
events: {
    url: '<?php echo get_site_url(); ?>/get_calcat_calendar.php',
    data: function() { // a function that returns an object
        return {
            dynamic_value1: id,
            dynamic_value2: user
        };
    }              
                error: function() {
                  alert('There was an error while fetching events.');
                }                  
              }
            }); 
        });
    }); 
</script>

另外我要添加下面生成json文件的文件:

PHP代码:

while($row = mysqli_fetch_assoc($result)){
    $title = get_the_title($row['ID']);
    $url = get_permalink($row['ID']);
    $e = array();
    $e['title'] = $title;
    $e['url'] = $url;
    $e['start'] = $row['start_date'];
    $e['end'] = $row['end_date'];       
    $e['color'] = '#33cc33';

    array_push($events, $e);
}

echo json_encode($events);
exit();

这是我使用从数据库中获取json的代码。任何帮助将不胜感激。谢谢

要求更新:

[{"title":"Timeout72","url":"http:\/\/www.goawebsites.com\/goacalendar\/event\/timeout72\/","start":"2017-11-29","end":"2017-12-31","color":"#33cc33"}]

<div id='calendar'></div>

其他日历脚本:

<script>
$(document).ready(function() {
var user_id = $('#current_user').val(); 
$('#calendar').fullCalendar({
displayEventTime: false,

    events: [
        <?php foreach($result as $r) { ?>
            {
            <?php $title = get_the_title($r['event_id']); ?>
            <?php $url = get_permalink($r['event_id']); ?>
            title: '<?php echo html_entity_decode($title); ?>',
            start: '<?php echo $r['start_date'] ?>',
            end: '<?php echo $r['end_date']." 23:59:59" ?>',
            url: '<?php echo $url; ?>',
            color: '#33cc33'
            },
        <?php } ?>  
    ]   

});
});
</script>   

1 个答案:

答案 0 :(得分:1)

这应该更符合您的需求:

1)首次设置日历时,请定义额外的&#34;用户&#34;和&#34;类别&#34;动态数据参数(使用回调函数)。

2)在您的类别中&#34;更改&#34;事件,您现在需要做的就是告诉日历重新获取事件。没有必要像你一直那样完全重新初始化日历。

我无法看到所有代码,包括您首次初始化日历的位置,因此这可能不是100%准确,但这是一般的想法:

$(document).ready(function() {
  $('#calendar').fullCalendar({
    events: {
      url: '<?php echo get_site_url(); ?>/get_calcat_calendar.php',
      data: function() { //using a callback function here allows fullCalendar to fetch the latest values of these parameters every time it makes a new request to the server, rather than them being supplied statically at initialisation
        return {
            id: $('#ccategory').val(),
            user: $('#current_user').val()
        };
      },
      error: function() {
        alert('There was an error while fetching events.');
      }
    }
  });

  $('#ccategory').change(function() {
     //just tell the calendar re-fetch the events. It will automatically get the latest category ID value and send it to the server as a parameter
    $("#calendar").fullCalendar("refetchEvents");
  });
});

这是基于&#34;动态数据参数&#34;中显示的模式。 https://fullcalendar.io/docs/event_data/events_json_feed/

文档中的部分