Php Fullcalendar:Json未反映在Fullcalendar中
我正在尝试从外部php文件获取事件到完整的日历视图。我曾经问过一个类似的问题,但我仍然在努力解决这个问题 代码(JS):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
<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获取了用户的值,而用户获取了类别的值。其次,我没有处理获取日期的文件中的空白类别。我已经编辑了你的问题。谢谢你的帮助。