Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用PHP、vanilla js和Ajax的午夜倒计时服务器_Javascript_Php_Ajax - Fatal编程技术网

Javascript 使用PHP、vanilla js和Ajax的午夜倒计时服务器

Javascript 使用PHP、vanilla js和Ajax的午夜倒计时服务器,javascript,php,ajax,Javascript,Php,Ajax,好吧,我再次尝试,因为上次我的帖子被标记为与我所问的完全不同的内容的复制品,所以基本上是那些对vannilla/php做这件事的快速堆叠者的问题毁了我的帖子,我没有得到有效的答案 这不是一个jQuery问题 这不是一个Ajax响应问题 (当我试图找到问题的答案时,我甚至发现自己的帖子是谷歌的第一个结果) 基本上,我用Javascript制作了一个午夜倒计时计时器,效果非常好 我试图让它倒计时到服务器的午夜,而不是本地机器,所以我做了一个Ajax调用,其中我echo getTime()我试图将t

好吧,我再次尝试,因为上次我的帖子被标记为与我所问的完全不同的内容的复制品,所以基本上是那些对vannilla/php做这件事的快速堆叠者的问题毁了我的帖子,我没有得到有效的答案

这不是一个jQuery问题

这不是一个Ajax响应问题

(当我试图找到问题的答案时,我甚至发现自己的帖子是谷歌的第一个结果)

基本上,我用Javascript制作了一个午夜倒计时计时器,效果非常好

我试图让它倒计时到服务器的午夜,而不是本地机器,所以我做了一个Ajax调用,其中我
echo getTime()
我试图将
this.responseText
放在我使用的
now.getTime()中

Javascript/Ajax

        (function () {
            var serverMilli = document.getElementById("serverMilli");
            var serverCountdown = document.getElementById("serverCountdown");

            var machineMilli = document.getElementById("machineMilli");
            var machineCountdown = document.getElementById("machineCountdown");

            let serverTime;
            var http = new XMLHttpRequest();
            var url = "time.php";
            http.open("POST", url, true);
            http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            http.onreadystatechange = function () {
                if (http.readyState === 4 && http.status === 200) {
                    serverTime = this.responseText;
                    serverMilli.textContent = this.responseText;
                }
                ;
            };
            http.send();

            function countDownServer() {

                var now = new Date();
                var currentTime = serverTime - now.getTime();
                var eventDate = new Date();
                eventDate.setDate(now.getDate() + 1);
                eventDate.setHours(24);
                eventDate.setMinutes(0);
                eventDate.setSeconds(0);
                eventDate.setMilliseconds(0);

                var eventTime = eventDate.getTime();
                var remainingTime = eventTime - currentTime;

                var sekunder = Math.floor(remainingTime / 1000);
                var minutter = Math.floor(sekunder / 60);
                var timer = Math.floor(minutter / 60);

                sekunder %= 60;
                minutter %= 60;
                timer %= 24;

                sekunder = (sekunder < 10) ? "0" + sekunder : sekunder;
                minutter = (minutter < 10) ? "0" + minutter : minutter;
                timer = (timer < 10) ? "0" + timer : timer;

                var testServer = timer + ":" + minutter + ":" + sekunder;
                serverCountdown.textContent = testServer;
                setTimeout(countDownServer, 1000);
            }
            countDownServer();

            function countDownMachine() {

                var now = new Date();
                var currentTime = now.getTime();
                machineMilli.textContent = currentTime;
                var eventDate = new Date();
                eventDate.setDate(now.getDate() + 1);
                eventDate.setHours(24);
                eventDate.setMinutes(0);
                eventDate.setSeconds(0);
                eventDate.setMilliseconds(0);

                var eventTime = eventDate.getTime();
                var remainingTime = eventTime - currentTime;

                var sekunder = Math.floor(remainingTime / 1000);
                var minutter = Math.floor(sekunder / 60);
                var timer = Math.floor(minutter / 60);

                sekunder %= 60;
                minutter %= 60;
                timer %= 24;

                sekunder = (sekunder < 10) ? "0" + sekunder : sekunder;
                minutter = (minutter < 10) ? "0" + minutter : minutter;
                timer = (timer < 10) ? "0" + timer : timer;

                var testMachine = timer + ":" + minutter + ":" + sekunder;
                machineCountdown.textContent = testMachine;
                setTimeout(countDownMachine, 1000);
            }
            countDownMachine();
        })();
(函数(){
var serverMilli=document.getElementById(“serverMilli”);
var serverCountdown=document.getElementById(“serverCountdown”);
var machineMilli=document.getElementById(“machineMilli”);
var machinecocountdown=document.getElementById(“machinecocountdown”);
让我们慢慢来;
var http=new XMLHttpRequest();
var url=“time.php”;
http.open(“POST”,url,true);
http.setRequestHeader(“内容类型”、“应用程序/x-www-form-urlencoded”);
http.onreadystatechange=函数(){
如果(http.readyState==4&&http.status==200){
serverTime=this.responseText;
serverMilli.textContent=this.responseText;
}
;
};
http.send();
函数countDownServer(){
var now=新日期();
var currentTime=serverTime-now.getTime();
var eventDate=新日期();
eventDate.setDate(现在是.getDate()+1);
eventDate.setHours(24);
eventDate.setMinutes(0);
eventDate.setSeconds(0);
eventDate.setmillizes(0);
var eventTime=eventDate.getTime();
var remainingTime=事件时间-当前时间;
var sekunder=数学楼层(剩余时间/1000);
var Mintter=数学楼层(sekunder/60);
var定时器=数学楼层(分钟/60);
sekunder%=60;
分钟数%=60;
计时器%=24;
sekunder=(sekunder<10)?“0”+sekunder:sekunder;
分钟器=(分钟器<10)?“0”+分钟器:分钟器;
定时器=(定时器<10)?“0”+定时器:定时器;
var testServer=timer+“:”+mintter+“:”+sekunder;
serverCountdown.textContent=testServer;
设置超时(countDownServer,1000);
}
countDownServer();
函数倒计时机(){
var now=新日期();
var currentTime=now.getTime();
machinemili.textContent=当前时间;
var eventDate=新日期();
eventDate.setDate(现在是.getDate()+1);
eventDate.setHours(24);
eventDate.setMinutes(0);
eventDate.setSeconds(0);
eventDate.setmillizes(0);
var eventTime=eventDate.getTime();
var remainingTime=事件时间-当前时间;
var sekunder=数学楼层(剩余时间/1000);
var Mintter=数学楼层(sekunder/60);
var定时器=数学楼层(分钟/60);
sekunder%=60;
分钟数%=60;
计时器%=24;
sekunder=(sekunder<10)?“0”+sekunder:sekunder;
分钟器=(分钟器<10)?“0”+分钟器:分钟器;
定时器=(定时器<10)?“0”+定时器:定时器;
var testMachine=timer+“:”+mintter+“:”+sekunder;
machinecocountdown.textContent=testMachine;
设置超时(倒计时机器,1000);
}
倒计时机器();
})();

我所要做的就是执行time()*1000,因为time()返回秒,.getTime()返回毫秒。。。waow不敢相信我监督了这件事,遇到了这么多问题,不敢相信stf没有人看到这个xD

你可以尝试这种方法来接收服务器时间,而不需要ajax或服务器端代码:不要从你自己那里回复开放式问题:,要么删除那个,要么删除这个,绝对不应该两者都有,而将两者都保留只会给你带来问题。文章的可能重复内容被删除了,我将使用ajax来实现这一点,没有框架或什么都没有:)