我希望我能够解释我试图正确地做什么,但我试图使用AJAX将相当多的日期传递(使用POST(到PHP文件,以检查日期是否有效(例如,2月31日至4月31日(。我不确定会有多少日期,有12个输入框,最多12个日期,最少1个日期。因此,传递到PHP文件的日期数可以是任意值。我希望能够";滚动";通过(像数组中那样使用数字0 1 2(PHP文件中的所有日期(及其D、M、Y(,以及;滚动";通过从PHP传递回JS的日期。
Jquery
var DAT = {}; //is such a declaration valid for an array?
k=0;
for(x=1;x<=12;x++)
{ I = "#ED" + x;
d= $(I).children('.dd').val();
m= $(I).children('.mmm').val();
y= $(I).children('.yyyy').val();
c= date_chk(d,m,y); //returns '1' if date ok
if(c==1) //Date OK
{ DATE[k] = [d,m,y];
alert(DATE[k][0]+" "+DATE[k][1]+" "+DATE[k][2]);
k++;
}
}
AJ.onreadystatechange = function(){
if((AJ.readyState == 4) && (AJ.status == 200))
{ var PH_RP = AJ.responseText;
alert("PHP REPLY:: " + PH_RP);
var DATE_Lst = JSON.parse(PH_RP);
alert("DATE1 Day::" + DATE_Lst.DT[0][0] + "DATE1 Month::" + DATE_Lst.DT[0][1] +"DATE1 Year::" + DATE_Lst.DT[0][2] );
alert("DATE2 Day::" + DATE_Lst.DT[1][0] + "DATE2 Month::" + DATE_Lst.DT[1][1] +"DATE2 Year::" + DATE_Lst.DT[1][2] );
}
var para = "DATESS=" + DATE; //? how do I send the whole stack of dates to the PHP file?
AJ.open("POST", "PHP/4_PHP_Check_Dates.php", true);
AJ.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
AJ.send(para);
以下是PHP文件::
$LOGARRY['DT'] = $_POST['DATESS'];
or
$LOGARRY['DT1'] = $_POST['DATESS'][1];
$LOGARRY['DT2'] = $_POST['DATESS'][2];
echo json_encode($LOGARRY);
谢谢。。感谢的任何帮助
如果你只想检查一个日期是否有效,你不需要往返PHP,你可以在Javascript中完成。
检测到一个";无效日期";JavaScript 中的日期实例
您询问了如何通过XMLHttpRequest将数组发送到PHP。
由于我像躲避瘟疫一样避开JQuery,所以我不能真正评论你的代码,但这里有一个简单的方法可以将X日期发送给你的PHP脚本:
三件事:
-
它很简单(没有错误检查等(
-
它使用GET。请随意将其制作成POST。
-
打开javascript控制台查看结果。
<html> <body> <script> // I assume you have an array with strings that might represent dates, like: // dates[0] = "2022-10-09"; // dates[1] = "2021-13-09"; // .... // dates[19] = "I am surely not a date"; // dates[20] = "2000-01-05"; var dates = []; dates[0] = "2022-10-09"; dates[1] = "2021-13-09"; dates[2] = "I am surely not a date"; dates[3] = "2000-01-05"; var myTestDates = JSON.stringify(dates); var myReq = new XMLHttpRequest(); myReq.addEventListener("load", reqListener); var url = "dateChecker.php?dates=" + encodeURIComponent(myTestDates); url += "&rand=" + Math.random(); myReq.open("GET", url , true); myReq.send(); function reqListener () { let passeddates = JSON.parse(this.responseText); console.log(passeddates); } </script> </body> </html>
和PHP脚本(名为dateChecker.PHP(:
<?php
$passedDates = json_decode( $_GET["dates"] );
$checkedDates = [];
foreach ($passedDates as $oneDate){
$d = DateTime::createFromFormat('Y-m-d', $oneDate);
$valid = ($d && $d->format('Y-m-d') === $oneDate) ? "valid" : "not valid";
$checkedDates[] = $oneDate . " is {$valid}";
}
echo json_encode($checkedDates);
?>