我需要帮助,因为我已经没有主意了。
我有一个ajax脚本和php脚本,逻辑如下:1. PHP脚本正在制作一个带有标记预订的日历并将其发送到HTML页面,2. 在HTML页面上,用户可以点击按钮"下个月",它发送一个ajax请求到php脚本。3.PHP正在做月++并发送结果。由于每次请求都会在php脚本中重置,因此只能工作一次。
你知道如何在日历中随意洗牌吗?
PHP:<?php
require_once ("config.php");
/* Fields counter */
$FieldsNo=1;
/* Getting today's date*/
$date = date("d.n.Y");
/* date slicing */
$str = explode(".", $date);
$day = $str[0];
$month = $str[1];
$year = $str[2];
$gmonth = $month;
$gyear = $year;
if (isset($_POST['month'])) {
$month++;
}
require_once ("arrays.php");
/* operation with calendar */
$daysinmonth=cal_days_in_month(CAL_GREGORIAN, $month, $year);
$julianDayCount=cal_to_jd(CAL_GREGORIAN, $month, 1, $year);
$dayOfWeek=jddayofweek($julianDayCount, 0);
$fullies = $daysinmonth;
/* counting amount of empty fields */
switch ($dayOfWeek) {
case 0:
$empties= 6;
break;
case 1:
$empties= 0;
break;
case 2:
$empties=1;
break;
case 3:
$empties = 2;
break;
case 4:
$empties = 3;
break;
case 5:
$empties = 4;
break;
case 6:
$empties = 5;
break;
}
/* month translation*/
if ($language == "pl") {
include("months_pl.php");
} else {
include("months_eng.php");
}
/* echoing calendar base */
echo $monthn;
echo $day;
echo "<br>";
if ($language == "pl") {
include("days_pl.php");
} else {
include("days_eng.php");
}
/* first loop - empty fields */
if ($today) {
include("calendarloopt.php");
} else {
include("calendarloop.php");
}
echo "</tr></tbody></table>";
echo json_encode($loadout);
?>
HTML/AJAX
<!DOCTYPE html>
<html lang="en">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#next").click(function() {
var jqXHR = $.ajax({
type : "POST",
url : "calendar.php",
data : {
month: 'next'
},
success: function(html){
$("#loadplace").html(html);
},
error: function(error) {
//ten fragment wykona się w przypadku BŁĘDU
}
});
return jqXHR.responseText;
});
});
</script>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<input type="button" id="next" value="Next Month"/>
<div id="loadplace" align="right" width="400" height ="400">
<?php
include 'calendar.php';
?>
</div>
</body>
</html>
不要在每次PHP页面运行时都重置它的值。
使用会话变量代替(如果尚未设置会话变量,则设置为合理的默认值)。
同样,当您尝试增加12月时,您当前的代码将失败。看一下PHP的Datetime::add函数
您应该在JavaScript中执行月份递增,而不是在PHP中。
AJAX请求应该返回与传递给它的参数一致的值。你想要实现它的方式,它也依赖于一个内部变量。
您的实际脚本也没有多少灵活性。它只能在下个月归还。如果您希望能够返回前一个月,或者将来的某个特定月份,该怎么办?
在我看来,您应该更改AJAX脚本,要么返回特定月份的日历,要么返回特定月份之后(或之前)月份的日历。