如何将FullCalendar变量传递给PHP?接收值始终为NULL
问题解决:FullCalendar传递日期参数到PHP为空的问题
问题根源
你当前的代码中,传递参数时只指定了URL参数名Datavisitt,但没有将获取到的日期变量值拼接到参数中,PHP端接收不到实际的参数值,所以返回NULL。URL参数必须遵循key=value的格式才能正确传递数据。
修改方案
修改JavaScript中events的URL拼接逻辑,把获取到的Datavisitt值拼接到URL里,同时用encodeURIComponent处理特殊字符,避免编码问题:
$(document).on('click', '.cons-visitt', function(){ // 简化冗余的设备判断逻辑,两种场景赋值完全一致 const initialViews = 'listWeek'; const Datavisitt = $("#Datavisitt").val(); const calendarEl = document.getElementById('calendarioo'); const calendar = new FullCalendar.Calendar(calendarEl, { headerToolbar: { left: 'prev,next today', center: 'title', right: 'listWeek' }, locale: "pt-br", buttonText:{ today: 'Hoje', list: 'Lista' }, // 拼接参数值并处理编码 events: '/visitas1.php?Datavisitt=' + encodeURIComponent(Datavisitt), }); calendar.render(); });
PHP端接收示例
因为是通过GET方式传递的参数,PHP端需要用$_GET全局变量接收:
// 先检查参数是否存在,避免未定义索引错误 if(isset($_GET['Datavisitt'])){ $datavisitt = $_GET['Datavisitt']; // 后续用$datavisitt执行事件过滤逻辑 } else { // 参数未传递时的兜底处理 }
额外优化建议
- 原代码中设备判断的
if-else分支赋值完全相同,直接简化为一行代码即可,减少冗余。 - 如果后续需要添加更多过滤条件,可改用FullCalendar的
events函数回调,通过POST请求传递参数(更适合多参数场景):
events: function(info, successCallback, failureCallback) { $.ajax({ url: '/visitas1.php', type: 'POST', data: { Datavisitt: Datavisitt, // 可添加其他过滤参数 }, success: function(response) { successCallback(response); }, error: function() { failureCallback(); } }); }
此时PHP端用$_POST['Datavisitt']接收参数即可。
内容的提问来源于stack exchange,提问作者Bruno
相关产品推荐
相关产品推荐

