【发布时间】:2018-03-06 13:36:36
【问题描述】:
我使用 js ajax 和 php 制作了一个倒数计时器。 问题是当计时器到达 00:00 时它不执行指定的操作。相反,计时器从 59:59 开始。 这是编写的代码:
<span class="pull-right" id="time_left"></span>
date_default_timezone_set('Asia/Karachi');
echo $_SESSION['end_time'] = $quiz_end_time;
//timer function
setInterval (function(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","timer.php",false);
xmlhttp.send(null);
document.getElementById("time_left").innerHTML = xmlhttp.responseText;
}, 1000);
//timer.php code
<?php session_start();
$from_time = date('Y-m-d H:i:s');
$to_time = $_SESSION['end_time'];
$time_form = strtotime($from_time);
$time_to = strtotime($to_time);
$difference = $time_to - $time_form;
echo "Time Left: ";echo $timer_time = date("i:s",$difference);echo "<br>";
//echo date ('H:i:s',strtotime($timer_time));
if($timer_time == "00:00"){
?>
<script>
document.getElementById("quiz_form").submit();
//window.location="manage-quizzes.php?Msg=quiz_ended"
</script>
<?php
session_destroy($_SESSION['quiz_id']);
session_destroy($_SESSION['end_time']);
header('Location:manage-quizzes.php?Msg=quiz_ended');
}else{
echo "OKAY";
}
?>
【问题讨论】:
-
我不确定您期望发生什么..... JavaScript 不能使用 innerHTML 执行。
-
我想在定时器等于00:00时提交表单
-
就我个人而言,我只会返回一个对象,该对象具有剩余时间或布尔值,可以从 Ajax 代码响应中提交和调用 subit。使用同步调用是一个可怕的想法,因为调用结束后用户将无法使用该页面。
-
比较
$difference > 0怎么样,而不是希望你能准确地到达 == 0 的时刻?
标签: javascript php mysql ajax