如何将jQuery日历选中的日期传递至PHP后端?
嘿,我来帮你搞定这个问题!你要把jQuery日历选中的日期以dd/mm/yyyy格式传到PHP,其实分前端处理格式+发送、后端接收解析两步就行,结合你给的代码片段,我给你整理完整方案:
如何将jQuery日历选中的日期以dd/mm/yyyy格式传递到PHP服务器
第一步:前端处理日期格式并通过AJAX发送
你已经用了ion.calendar插件,我们先完善日历的初始化代码,在选中日期的回调里把日期格式化成你要的dd/mm/yyyy,再用AJAX把这个值传给PHP脚本。基于你给出的<div id="datum"></div>,补全前端代码:
<!doctype html> <html> <head> <meta charset="utf-8"> <link href="css/ion.calendar.css" rel="stylesheet" type="text/css"> <!-- 记得引入jQuery和ion.calendar的JS文件 --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="js/ion.calendar.js"></script> </head> <body> <div id="datum"></div> <script> $(document).ready(function() { $('#datum').ionCalendar({ // 可根据需求配置日历选项,比如语言、默认显示月份 lang: 'zh', // 关键:选中日期后的回调函数 onSelect: function(date) { // 把Date对象格式化成dd/mm/yyyy格式 const day = String(date.getDate()).padStart(2, '0'); const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需+1 const year = date.getFullYear(); const formattedDate = `${day}/${month}/${year}`; // 用AJAX发送到PHP服务器 $.ajax({ url: 'process_date.php', // 你的PHP处理脚本路径 type: 'POST', data: { selected_date: formattedDate }, // 传递格式化后的日期 success: function(response) { // 服务器返回的响应,可根据需求做提示 console.log('日期已成功发送,服务器响应:', response); alert('日期提交成功!'); }, error: function(xhr, status, error) { console.error('发送失败:', error); alert('提交失败,请重试!'); } }); } }); }); </script> </body> </html>
第二步:PHP服务器端接收并处理日期
创建process_date.php脚本,接收前端传过来的日期。注意:因为是dd/mm/yyyy格式,直接用new DateTime()会解析错误,必须指定格式验证解析:
<?php // 检查是否有POST过来的日期参数 if(isset($_POST['selected_date'])) { $selectedDate = $_POST['selected_date']; // 解析dd/mm/yyyy格式的日期为DateTime对象 $dateObj = DateTime::createFromFormat('d/m/Y', $selectedDate); // 验证日期是否有效(避免恶意输入的无效日期) if($dateObj && $dateObj->format('d/m/Y') === $selectedDate) { // 这里写你的业务逻辑,比如存入数据库、日期计算等 echo "成功接收日期:{$selectedDate},转换为标准数据库格式:{$dateObj->format('Y-m-d')}"; } else { echo "无效的日期格式,请确保是dd/mm/yyyy格式!"; } } else { echo "未接收到日期参数!"; } ?>
几个注意点
- 确保jQuery和ion.calendar的JS文件路径与你的项目结构匹配,不要引错
- 推荐用POST方式传递日期,避免GET方式中
/字符的编码问题 - 服务器端一定要做日期有效性验证,防止非法数据传入
内容的提问来源于stack exchange,提问作者janka
相关产品推荐
相关产品推荐

