Php Fullcalendar:Json未反映在Fullcalendar中

Php Fullcalendar:Json未反映在Fullcalendar中,php,json,fullcalendar,Php,Json,Fullcalendar,我正在尝试从外部php文件获取事件到完整的日历视图。我曾经问过一个类似的问题,但我仍然在努力解决这个问题 代码(JS): <script> $(document).ready(function() { $('#ccategory').change(function(){ var id = $(this).val(); var user = $('#current_user').val(); var

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

代码(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>
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();
[{"title":"Timeout72","url":"http:\/\/www.goawebsites.com\/goacalendar\/event\/timeout72\/","start":"2017-11-29","end":"2017-12-31","color":"#33cc33"}]
<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>   
这是我正在使用的从数据库获取json的代码。任何帮助都将不胜感激。多谢各位

需求更新:

<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>
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();
[{"title":"Timeout72","url":"http:\/\/www.goawebsites.com\/goacalendar\/event\/timeout72\/","start":"2017-11-29","end":"2017-12-31","color":"#33cc33"}]
<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>   

其他日历脚本:

<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>
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();
[{"title":"Timeout72","url":"http:\/\/www.goawebsites.com\/goacalendar\/event\/timeout72\/","start":"2017-11-29","end":"2017-12-31","color":"#33cc33"}]
<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>   

$(文档).ready(函数(){
var user_id=$('#current_user').val();
$(“#日历”).fullCalendar({
displayEventTime:false,
活动:[
{
标题:“”,
开始:“”,
结束:“”,
url:“”,
颜色:“#33cc33”
},
]   
});
});

这应该更像您需要的:

1) 首次设置日历时,动态定义额外的“用户”和“类别”数据参数(使用回调函数)

2) 在您的类别“更改”事件中,您现在需要做的只是告诉日历重新蚀刻事件。没有必要像您一直在做的那样完全重新初始化日历

我看不到所有代码,包括您第一次初始化日历的位置,因此这可能不是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");
  });
});
$(文档).ready(函数(){
$(“#日历”).fullCalendar({
活动:{
url:“/get\u calcat\u calendar.php”,
data:function(){//在这里使用回调函数,允许fullCalendar在每次向服务器发出新请求时获取这些参数的最新值,而不是在初始化时静态提供这些值
返回{
id:$('#ccategory').val(),
用户:$('当前用户').val()
};
},
错误:函数(){
警报('获取事件时出错');
}
}
});
$('#ccategory')。更改(函数(){
//只需告诉日历重新获取事件。它将自动获取最新的类别ID值,并将其作为参数发送到服务器
$(“#日历”)。完整日历(“参考事件”);
});
});

这是基于文档中“Dynamic data parameter”(动态数据参数)部分所示的模式,我们需要的信息比“仍在挣扎”多一点。出了什么问题?Ajax错误、JS错误、PHP错误、其他错误??顺便问一下,为什么每次“更改”事件运行时都要创建整个日历?当然,您只需要让它重新蚀刻事件,但发送不同的类别ID?什么都不会发生。没有错误,这就是我被卡住的原因。您还需要什么?您是否检查了浏览器的“网络”选项卡以查看是否确实发生了获取_calcat_calendar.php的请求?如果是,它将返回什么(状态代码和响应正文)?如果它没有运行,您是否检查了“更改”事件是否正在实际运行,并且没有生成脚本错误?换句话说,我需要的是一些基本的调试信息,我在选择某个选项时添加了一些警报,这些警报正在工作。但网络上什么也没有显示,日历是否正在创建?即使事件获取失败,您仍然应该看到出现一个空白日历,除非控制台中存在脚本错误,或者您的HTML元素不存在。你能显示与此相关的HTML吗?嗨,ADyson,谢谢你的回复。这不会影响我以前的日历脚本吗?我在问题中添加它以供参考。这里的示例旨在替换问题中的代码和主日历脚本,是的。我看到您现在添加了主日历脚本。是的,当然,这段代码应该取代所有代码。您只需要声明日历一次。您的PHP脚本应该能够处理最初没有选择“用户”或“类别”选项的情况。它还应该接受fullcalendar自动提供给它的开始和结束参数(参见文档)。您之前所做的是将事件硬编码到呈现到页面的javascript中,而不是在视图更改(或调用refetchEvents)时通过ajax获取它们,这是一种更灵活的方法。您好,ADyson,很抱歉延迟。现在我的日历根本没有加载,控制台在
Error:function(){alert('fetching events.');}
代码部分显示
Uncaught Syntax Error意外标识符
。您好,ADyson,非常抱歉回复太晚。我让它工作了。1个问题是id获取了用户的值,而用户获取了类别的值。其次,我没有处理获取日期的文件中的空白类别。我已经编辑了你的问题。谢谢你的帮助。