[英]Php calendar with Javascript/Ajax
我正在创建一个php日历,并且正在使用Javascript / Ajax,以便在几个月之间滚动而不必刷新页面。 该日历在没有Javascript / Ajax的情况下工作正常,但现在仅显示纯白色屏幕。
对不起,一大堆代码
代码: ** show_calendar.php **
<html>
<head>
<link href="calstyle.css" rel="stylesheet" type="text/css" media="all" />
<script language="JavaScript" type="text/javascript">
function initialCalendar(){
var hr = new XMLHttpRequest();
var url = "calendar_start.php";
var currentTime = new date ();
var month = currentTime.getMonth() + 1;
var year = currentTime.getFullYear();
showmonth = month;
showyear = year;
var vars= "showmonth="+showmonth+"&showyear="+showyear;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if (hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("showCalendar").innerHTML = return_data;
}
}
hr.send(vars);
document.getElementbyId("showCalendar"). innerHTML = "processing...";
}
</script>
<script language="JavaScript" type="text/javascript">
function next_month() {
var next_month = showmonth + 1;
if(nextmonth > 12) {
nextmonth = 1;
showyear = showyear+1;
}
showmonth = nextmonth;
var hr = new XMLHttpRequest();
var url = "calendar_start.php";
var vars= "showmonth="+showmonth+"&showyear="+showyear;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if (hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("showCalendar").innerHTML = return_data;
}
}
hr.send(vars);
document.getElementbyId("showCalendar"). innerHTML = "processing...";
}
</script>
<script language="JavaScript" type="text/javascript">
function last_month() {
var last_month = showmonth - 1;
if(lastmonth <1 ) {
lasttmonth = 12;
showyear = showyear-1;
}
showmonth = lastmonth;
var hr = new XMLHttpRequest();
var url = "calendar_start.php";
var vars= "showmonth="+showmonth+"&showyear="+showyear;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if (hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("showCalendar").innerHTML = return_data;
}
}
hr.send(vars);
document.getElementbyId("showCalendar"). innerHTML = "processing...";
}
</script>
</head>
<body onload="initialCalendar();">
<div id="showCalendar"> </div>
</body>
</html>
**Calendar_start.php**
<?php
$showmonth = $_POST['showmonth'];
$showyear = $_POST['showyear'];
$showmonth= preg_replace('#[^0-9]#i', '', $showmonth);
$showyear= preg_replace('#[^0-9]#i', '', $showyear);
$day_count = cal_days_in_month(CAL_GREGORIAN, $showmonth, $showyear);
$pre_days = date('w', mktime(0,0,0, $showmonth, 1, $showyear));
$post_days = (6-(date('w', mktime(0,0,0, $showmonth, $day_count, $showyear))));
echo '<div id="calendar_wrap">';
echo '<div class="title_bar">';
echo '<div class="previous_month"><input name="submit" type="submit" value="Previous Month" onClick="javascript:last_month();"></div>';
echo '<div class="show_month">' . date('F', mktime(0, 0, 0, $showmonth)) . ' ' . $showyear . '</div>';
echo '<div class="next_month"><input name="submit" type="submit" value="Next Month" onClick="javascript:next_month();"></div>';
echo '</div>';
echo '<div class="week_days">';
echo '<div class="days_of_the_week">Sun</div>';
echo '<div class="days_of_the_week">Mon</div>';
echo '<div class="days_of_the_week">Tues</div>';
echo '<div class="days_of_the_week">Wed</div>';
echo '<div class="days_of_the_week">Thur</div>';
echo '<div class="days_of_the_week">Fri</div>';
echo '<div class="days_of_the_week">Sat</div>';
echo '<div class="clear"></div>';
echo '</div>';
if ($pre_days != 0) {
for($i=1; $i<=$pre_days; $i++) {
echo '<div class="non_cal_day"></div>';
}
}
for ($i=1; $i<= $day_count; $i++) {
echo '<div class="cal_day">';
echo '<div class="day_heading">' . $i . '</div>';
echo '</div>';
}
if ($post_days !=0) {
for($i=1; $i<=$post_days; $i++) {
echo '<div class="non_cal_day"></div>';
}
}
echo '</div>';
?>
让我们一起去吧。
首先,您已经编写了三份代码,您确实应该将它们放入一个函数中,例如, function load_month(n)
使用load_mont(current)
, load_month(current+1)
和load_month(current-1)
调用的function load_month(n)
(我留给您在此处执行实际代码)。
其次,您至少有两种情况下的错误: var currentTime = new date ();
应该具有Date
并且在第23行中, getElementbyId
缺少大写getElementbyId
B
第三,在我的本地服务器默认的php安装中,似乎缺少日历扩展名(至少是cal_days_in_month方法)。 因此,如果在进行了前面的更正后,您的代码仍然无法正常工作,则可能需要调查一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.