我正在尝试实现一个计时器.我从SO帖子中学到了这个想法.
<?PHP if(($_SERVER['REQUEST_METHOD'] === 'POST') && !empty($_POST['username'])) { //secondsDiff is declared here $remainingDay = floor($secondsDiff/60/60/24); } ?>
这是我的PHP代码.我的PHP,html和JS代码在同一页面中.我的html中有一个按钮.当用户点击html页面时,它将调用Ajax函数
//url:"onlinetest.PHP",//dataType: 'json',beforeSend: function() { $(".startMyTest").off('click'); setCountDown(); }
它将调用setCountDown()方法,该方法在一开始就包含一行
var days = <?PHP echo $remainingDay; ?>;
当我运行页面时,它表示[甚至在点击按钮之前]“预期表达式,在上面的行中得到’<'”.我怀疑是 为什么这个PHP变量在我触发按钮之前被替换.请让我知道锄头来解决这个问题或如何改变我的想法.
解决方法
问题是,由于初始加载,$_POST值未填充(第一次加载时为空),
您设置的变量未定义,只需确保初始化该变量.
<?PHP // initialize $remainingDay = 1; if(($_SERVER['REQUEST_METHOD'] === 'POST') && !empty($_POST['username'])) { //secondsDiff is declared here $remainingDay = floor($secondsDiff/60/60/24); echo json_encode(array('remaining_day' => $remainingDay); exit; } ?> <script> var days = <?PHP echo $remainingDay; ?>; $('.your_button').on('click',function(){ $.ajax({ url: 'something.PHP',dataType: 'JSON',type: 'POST',beforeSend: function() { // whatever processes you need },success: function(response) { alert(response.remaining_day); } }); }); </script>