-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))));

次のようなエラー メッセージが表示され続けます。

注意: 未定義のインデックス: C:\xampp\htdocs\calendar_start.php の 2 行目の showmonth

注意: 未定義のインデックス: C:\xampp\htdocs\calendar_start.php の 3 行目の showyear

警告: cal_days_in_month() は、パラメーター 2 が長く、8 行目の C:\xampp\htdocs\calendar_start.php で指定された文字列であると想定しています。

警告: mktime() は、パラメータ 4 が長く、C:\xampp\htdocs\calendar_start.php の 9 行目に指定された文字列であると想定しています

警告: 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

同じ方法(POST / GET)でパラメータを送受信していますか?そうでない場合は、未定義のインデックスエラーが発生する可能性があります...つまり、GETを使用してパラメータを送信し、POSTを使用してパラメータを受信する場合、またはその逆の場合。

于 2013-03-01T20:14:28.460 に答える
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 に答える