【发布时间】:2021-10-17 08:19:24
【问题描述】:
我想用 php 创建一个可以在服务器端滚动的日历。昨天我收到了一个关于如何用 Ajax 实现它的好建议(我的尝试失败了)。虽然答案看起来很有希望和正确,但我没有让它发挥作用。可能它就像一条错误的路径一样简单,但我对路径的尝试没有成功。不幸的是,我不知道如何调试它。
问题是,单击按钮更新数据(滚动日历)不会提供任何反应。但是,会呈现初始日历视图。
文件结构:
index.php
booking1.php
presentation (folder)
booking2.php
cal.php
home.php
Safari 中显示的客户端代码(在上半部分的末尾,您将找到日历滚动按钮和相应脚本的按钮)
<span id="calendar">
<section class="container">
<div class="row">
<div class="col">
<div class="card">
<div class="card_body">
<div class="calendar_month">
<span class="calendar_month_title">
<button onclick="prevMonth()">< Sep</button>
Oct
</span>
// ....
</section>
<script scr="assets/js/bootstrap.bundle.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script>
var defaultMonth = 10;
var defaultYear = 2021;
var currentMonth = defaultMonth;
var currentYear = defaultYear;
function updateCal() {
$('#calendar').load('presentation/cal.php?month=' + currentMonth + '&year=' + currentYear);
}
function nextMonth() {
currentMonth += 1;
if (currentMonth == 13) {
currentMonth = 1;
currentYear += 1;
}
updateCal();
}
function prevMonth() {
currentMonth -= 1;
if (currentMonth == 0) {
currentMonth = 12;
currentYear -= 1;
}
updateCal();
}
</script>
</body>
这是presentation/cal.php 文件
<?php
$defaultMonth = date("m");
$defaultYear = date("Y");
$month = isset($_GET['month']) ? $_GET['month'] : $defaultMonth;
if (strlen($month) === 1 ) {
$month = '$month' . strval($month);
}
$year = isset($_GET['year']) ? $_GET['year'] : $defaultYear;
$requestedDate = new DateTime(strval($year) . '-' . strval($month) . '-01');
echo '<section class="container">';
echo '<div class="row">';
echo '<div class = "col">';
echo '<div class = "card"><div class="card_body">';
getCalendar($requestedDate, true, true, false);
echo '</div></div>';
echo '</div>';
echo '</section>';
主目录中的booking1.php(calendar.php 承载getCalendar() 函数)
<?php
define('HOME_DIR',__DIR__);
require_once __DIR__.'/calendar/calendar.php';
include __DIR__.'/presentation/header.php';
include __DIR__.'/presentation/booking.php';
还有presentation/booking2.php
<section class="container" id="tbd">
<?php
echo '<span id="calendar">';
include __DIR__.'/cal.php';
echo '</span>';
?>
</section>
<script scr="assets/js/bootstrap.bundle.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script>
var defaultMonth = <?php echo date("n") ?>;
var defaultYear = <?php echo date("Y") ?>;
var currentMonth = defaultMonth;
var currentYear = defaultYear;
function updateCal() {
$('#calendar').load('presentation/cal.php?month=' + currentMonth + '&year=' + currentYear);
}
function nextMonth() {
currentMonth += 1;
if(currentMonth == 13) {
currentMonth = 1;
currentYear += 1;
}
updateCal();
}
function prevMonth() {
currentMonth -= 1;
if(currentMonth == 0) {
currentMonth = 12;
currentYear -= 1;
}
updateCal();
}
</script>
</body>
任何想法,为什么按钮点击没有反应?我将如何调试这个?这实际上只是一个小型的私人项目,我还没有设法让 Eclipse 与 MySQL 一起使用,以便我可以使用 Eclipse 进行调试。这就是为什么我出于调试原因打印变量等。但是,如果页面已成功呈现并且仅更新部分失败,则此方法不再有效(在我的(非)专业水平上)
【问题讨论】: