通过AJAX向PHP发送和接收多个日期



我希望我能够解释我试图正确地做什么,但我试图使用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脚本:

三件事:

  1. 它很简单(没有错误检查等(

  2. 它使用GET。请随意将其制作成POST。

  3. 打开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);
?>

最新更新