-2

大家好,我正在使用 AJAX 和 PHP 执行日历功能

$showmonth = $_POST['showmonth'];
$showyear = $_POST['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))));

我不断收到错误消息说:

注意:未定义索引:第 2 行 C:\xampp\htdocs\calendar_start.php 中的 showmonth

注意:未定义索引:第 3 行 C:\xampp\htdocs\calendar_start.php 中的 showyear

警告:cal_days_in_month() 预计参数 2 很长,字符串在第 8 行的 C:\xampp\htdocs\calendar_start.php 中给出

警告:mktime() 期望参数 4 很长,字符串在第 9 行的 C:\xampp\htdocs\calendar_start.php 中给出

警告:mktime() 期望参数 4 很长,字符串在第 10 行的 C:\xampp\htdocs\calendar_start.php 中给出

我认为这与我的 AJAX java 脚本有关,但我只是不知道 AJAX 代码还有哪些部分,但我认为这是困扰我的部分

function next_month() {
    var nextmonth = 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").innerHML = return_data;
        }
}
    hr.send(vars);
    document.getElementById("showCalendar").innerHTML = "processing...";
}
</script>

这也可能是问题:

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").innerHML = return_data;
        }
}
    hr.send(vars);
    document.getElementById("showCalendar").innerHTML = "processing...";
}
4

3 回答 3

2

在我度过了 5 个小时之后,我发现了这个: http ://www.openjs.com/articles/ajax_xmlhttp_using_post.php

在这里您可以发现您只需要 2 行代码:

hr.setRequestHeader("Content-length", vars.length);
hr.setRequestHeader("Connection", "close");
于 2013-03-21T15:14:48.357 回答
1

如果你在你的javascript中改变这个???

var url = "calendar_start.php";
var vars = "showmonth="+showmonth+"&showyear="+showyear;
var final_url = url+"?"+vars;
alert(final_url); //this line should a message with the url, post it please.
hr.open("GET",final,true);

那应该行得通。

PS:您使用 get params 传递您的 url,因此在您的 php 文件中您应该像这样收到它们

$showmonth = $_GET['showmonth']; //I change POST by GET
$showyear = $_GET['showyear']; //DONT forget to chenge this in your php file

萨卢多斯 ;)

于 2013-03-01T20:07:18.483 回答
1

您是否使用相同的方法(POST/GET)发送和接收参数...?如果不是这样..它可能会给出未定义的索引错误...即,如果您使用 GET 发送参数并使用 POST 接收参数,反之亦然..

于 2013-03-01T20:14:28.460 回答