如何获取当前URL参数并传递给FullCalendar以获取对应事件
从URL获取ID并在FullCalendar加载对应事件的解决方案
1. PHP端获取URL中的ID参数
你的URL格式为www.mysite.com/rooms?id=1,其中的id属于GET请求参数,直接通过$_GET['id']即可获取,同时要做类型转换和合法性校验,避免非法参数引发的问题。修改后的PHP代码如下:
// 从URL的GET参数中提取room ID,设置默认值防止空参数 $rmid = isset($_GET['id']) ? (int)$_GET['id'] : 0; // 若ID非法,直接返回空数组终止执行 if($rmid <= 0) { echo json_encode([]); exit; } $conn = $pdo->open(); $stmt = $conn->prepare("SELECT *, checkin as start, checkout as end FROM reservation WHERE room_id= :rmid ORDER BY id "); $stmt->execute(['rmid' => $rmid]); $results = array(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $results[] = $row; } $stmt->closeCursor(); $pdo->close(); echo json_encode($results);
2. FullCalendar端传递ID参数到PHP接口
需要先从当前页面URL中提取id参数,再将其附加到fetch-event.php的请求地址中,确保PHP能接收到对应参数。修改后的FullCalendar代码如下:
$(document).ready(function () { // 封装获取URL参数的工具函数 function getUrlParam(name) { let params = new URLSearchParams(window.location.search); return params.get(name); } let roomId = getUrlParam('id'); // 处理无参数的情况,避免请求出错 roomId = roomId ? roomId : 0; var calendar = $('#calendar').fullCalendar({ editable: false, // 将roomId作为GET参数传递给PHP接口 events: `fetch-event.php?id=${roomId}`, displayEventTime: false, eventRender: function (event, element, view) { event.allDay = event.allDay === 'true'; }, selectable: false, selectHelper: true, }); });
关键说明
- 改用
$_GET['id']是因为URL参数属于GET请求范畴,之前的$_POST['rmid']用于接收POST参数,与当前场景不匹配。 - JS端使用
URLSearchParamsAPI解析URL参数,写法简洁且兼容性良好。 - 增加参数合法性校验,避免无参数或非法参数导致的数据库查询异常。
内容的提问来源于stack exchange,提问作者the_guru
相关产品推荐
相关产品推荐

