您可能想要更多细节,但这里是它的要点:
用户访问一个网页,地址指向一个 PHP 文件 - PHP 文件在服务器上运行。它每个请求运行一次,因此输出只会提供给请求者。如果文件是静态的,或者如果它总是产生相同的 HTML 输出 - 它对每个人都是一样的。
在您的情况下,听起来您至少需要一个 month 变量,也可能需要一个 year 变量。当请求带有变量(如$('#calendar').load('/presentation/cal.php?month=10&year=2021'))时,您可以使用变量值来更改输出。由于变量来自请求,因此输出将特定于传递的变量 - 因此站点上的每个用户都可以发送不同的请求并且都看到唯一的输出。
在上面的示例中,月份和年份是通过 GET 传递的(即,它们被附加到 URL 中,而不是在表单中或通过像 $.post('cal.php', {month: 10, year: 2021}, function(responseData) { /*...*/ }); 这样的 POST AJAX 传递)。
PHP 又具有$_GET 和$_POST 数组来分别保存通过GET 和POST 方法传递的参数。因此,在请求的 PHP 文件 (cal.php) 中,您可以使用 $_GET['month'] 和 $_GET['year'] 访问请求的月份和年份。您需要检查它们是否存在于请求中,如果不存在,请使用默认值。如果它们在请求中,您需要验证它们是否是合法值,如果不是,请使用默认值(或向用户发送错误消息)。
所以伪代码可能看起来像:
cal.php
<?php
$defaultMonth = date("n");
$defaultYear = date("Y");
$month = isset($_GET['month']) ? $_GET['month'] : $defaultMonth;
/* check that $month is 1 - 12 [or whatever format you're expecting] and if not, set it to $defaultMonth instead, same thing for year */
$year = isset($_GET['year']) ? $_GET['year'] : $defaultYear;
/* query your database for events occurring in month $month and year $year */
/* echo out your calendar HTML with the included events from the requested month/year */
?>
index.php:
<div id='calendar'></div>
<script src='/path/to/jquery.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('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>