我正在使用日期选择器来选择日期并将该日期传递给PHP以显示特定日期(from here)的图像。奇怪的是,这适用于Firefox,但不适用于Chrome,Internet Explorer,Edge和Opera。
Datepicker页面上的Javascript
$("#datepicker").datepicker({
onSelect: function() {
var date = $('#datepicker').datepicker("getDate");
$.ajax({
url: "processdate.php",
type: "POST",
async: true,
data: {
selected_date: date
},
success: function(resp) {
if (resp === "true") {
window.location.href = "test.php";
} else {
alert("nope :-(");
}
}
});
};
传递给processdate.php
,我从那里进一步使用它:
<?php
if(!isset($_SESSION)){
session_start();
}
if(isset($_POST["selected_date"])){
$_SESSION["date"] = $_POST["selected_date"];
echo "true";
} else {
echo "false";
}
?>
我创建了test.php
来回显数据,看看它失败的原因:
<?php
if(!isset($_SESSION)){
session_start();
}
$datePicker = $_SESSION["date"];
$datePHP = strtotime($datePicker);
$date = date('d-m-Y', $datePHP );
echo $datePicker;
echo "<br>";
echo $datePHP;
echo "<br>";
echo $date;
?>
在Firefox中输出Test.php,正常工作以及它应该如何:
2016年3月2日星期三00:00:00 GMT + 0100
1456873200个
2016年2月3日
在Chrome中输出Test.php,无法正常工作,第二行(strtotime)缺失
2016年3月2日星期三00:00:00 GMT + 0100(West-Europa(standaardtijd))
01-01-1970
正如您所看到的,Chrome似乎没有回显strtotime
。与IE / Edge / Opera相同。令我困惑的是,这有可能吗?我尝试设置getDate格式,但这似乎不起作用?
答案 0 :(得分:0)
你有没有尝试过:
console.log(date);
在您的日期变量上并检查控制台,以确保它实际上是在每个浏览器上获取日期。这个问题最有可能出现在你的javascript上,就像有人已经指出的那样,php在服务器上执行,因此它会在每个浏览器上运行或失败,而不是选择性的。
答案 1 :(得分:0)
我在Chrome和Firefox上都遇到了同样的问题。 PHP strtotime()函数不识别日期/时间字符串,因为它包含时区信息。如果您按以下方式剪切此信息(您必须手动调整时区),它才有效:
<?php
if(!isset($_SESSION)){
session_start();
}
$datePicker = $_SESSION["date"];
// Remove time zone information from the string so that it can be parsed
$index=strpos($datePicker,"GMT");
$datePicker=substr($datePicker,0,$index-1);
$datePHP = strtotime($datePicker);
$date = date('d-m-Y', $datePHP );
echo $datePicker;
echo "<br>";
echo $datePHP;
echo "<br>";
echo $date;
?>