AJAX查询时没有设置$_GET值
$_GET values are not set during AJAX query
基本上,我想要发生的是,在单击其中一个箭头时,日历会更改月份。我觉得有一个简单的错误,我只是忽略了它。如果我需要解释什么,请告诉我。
calendar.php:
<?php
function calendar($selectedDate = "now") {
$selectedDate = strtotime($selectedDate);
$theFirst = strtotime(date('m/01/Y', $selectedDate));
$weekDayOfTheFirst = (int) date('w', $theFirst);
$lastDayOfTheMonth = (int) date('j', strtotime('-1 day', strtotime('+1 month', $theFirst)));
$numberOfWeeks = ceil(($weekDayOfTheFirst + $lastDayOfTheMonth) / 7);
$selectedMonth = (int) date('m', $selectedDate);
echo "<table id='"calendar'"><tr><td onclick='"updateCalendar('";
echo date("F", strtotime('-1 month', $selectedDate)) . "', '" . date("Y", strtotime('-1 month', $selectedDate));
echo "')'"><a href='"#'"><</a></td><th colspan='"5'">" . date("F 'y", $selectedDate) . "</th><td onclick='"updateCalendar('";
echo date("F", strtotime('+1 month', $selectedDate)) . "', '" . date("Y", strtotime('+1 month', $selectedDate));
echo "><a href='"#'">></a></td></tr>";
echo "<tr><th>S</th><th>M</th><th>T</th><th>W</th><th>R</th><th>F</th><th>S</th></tr>";
for ($week = 0; $week < $numberOfWeeks; $week++) {
echo "<tr>";
for ($dayOfTheWeek = 0; $dayOfTheWeek <= 6; $dayOfTheWeek++) {
$date = strtotime($dayOfTheWeek + $week * 7 - $weekDayOfTheFirst . 'days', $theFirst);
$dayOfTheMonth = (int) date('j', $date);
echo "<td" . (date('m/Y', $date) == date('m/Y', $selectedDate) ? "" : " class='"outOfMonth'"");
echo ($date == $selectedDate ? " id='"today'"" : "") . "><a href='"#'">" . $dayOfTheMonth . "</a></td>";
}
echo "</tr>";
}
echo "</table>'n";
}
echo "<div>" . $_GET["month"] . "</div><div>" . $_GET["year"] . "</div>";
if (isset($_GET["month"]) && isset($_GET["year"])) {
echo "<div>GET</div>";
calendar($_GET["month"] . ' ' . $_GET["year"]);
} else {
echo "<div>not GET</div>";
calendar();
}
?>
calendar.js:
function updateCalendar(month, year) {
var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("sideBar").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "/home2/crompton/scripts/calendar.php?month=" + month + "&year=" + year, true);
xmlhttp.send();
}
向操作系统路径发出GET请求对我来说似乎很奇怪。如果只是发出请求http://localhost/calendar.php?month=4&year=2011(或任何您正在运行您的服务器)。
这将是最有意义的,因为web服务器是设置$_GET变量的服务器,并且该web服务器通常侦听端口80。当你打这个电话时,我很确定没有web服务器正在监听。
@Mike: true, GET请求对操作系统路径不起作用,只能对服务器路径起作用
无论如何,在这样的情况下你应该总是使用绝对路径,这样更安全: xmlhttp.open("GET", "http://localhost/home2/crompton/scripts/calendar.php?month=" + month + "&year=" + year, true);
相关文章:
- chrome.storage.local.get 如何设置值
- 检查是否已设置GET变量
- Angular 2:如何在 GET 和 POST 请求中设置 double、float、int 和布尔类型参数
- 由于浏览历史设置,angularjs http.get调用未在ie10中启动
- 使用javascript设置GET变量
- Session.get未在Meteor.js中设置变量
- 在节点.js中设置 HTTP GET 中的 URL 参数的默认值
- 在javascript中设置cookie并在ashx处理程序中get
- 在 $.get 中设置状态
- 使用 Fetch GET 请求设置查询字符串
- 带有设置了安全标志的 cookie 的 GET 请求
- 如何在jQuery.get()中设置进度条
- 使用Django设置jquery pjax时出现问题(未设置头,但添加了GET参数)
- B扩展A:在B中设置将覆盖get
- 如何在没有POST/GET/FORM的情况下在onclick事件HTML中设置PHP会话
- 如何为浏览器GET设置请求头
- Cookie作为图像名称和get值设置背景
- 变量在get调用中设置后仍未定义
- 流星会话设置/get强制html重新渲染
- Rails链接到忽略e.preventDefault();从jQuery调用,因为方法::get已设置