Javascript 为什么我不能将服务器的日期时间传递给本地jquery脚本?
我有一个非常简单的timeofserver.php页面:Javascript 为什么我不能将服务器的日期时间传递给本地jquery脚本?,javascript,php,jquery,Javascript,Php,Jquery,我有一个非常简单的timeofserver.php页面: <?php echo date('D, d M y H:i:s'); ?> 但是我得到的不是服务器时间(甚至是本地时间和警报,而是弹出窗口: Thu Jan 01 1970 01:00:00 GMT+0100 (Central Europe Standard Time) 此代码有什么问题?您使用的是头请求,它不包括响应正文。将“head”改为“GET” 否则,您可以将时间包含在标题中,并从那里获取时间,而不是将其发送
<?php
echo date('D, d M y H:i:s');
?>
但是我得到的不是服务器时间(甚至是本地时间和警报,而是弹出窗口:
Thu Jan 01 1970 01:00:00 GMT+0100 (Central Europe Standard Time)
此代码有什么问题?您使用的是头请求,它不包括响应正文。将“head”改为“GET”
否则,您可以将时间包含在标题中,并从那里获取时间,而不是将其发送到正文中
方法1)使用标题:
在PHP中将时间作为标题发送,将您的PHP更改为:
header("x-app-date: ".date('D, d M y H:i:s'));
然后在你的AJAX中获得日期,就像这样
$.ajax({
'type': 'HEAD',
'url':'timeoftheserver.php',
'complete': function(r){
today = new Date(this.getResponseHeader('x-app-date'));
}
});
方法2:使用主体
让PHP保持原样。
将Ajax更改为:
$.ajax({
'type': 'GET',
'url': 'timeoftheserver.php',
'complete': function(resp){
today = new Date(resp);
}
});
谢谢,但是当我换了头,什么也没变的时候,我还是得到了1970年1月1日星期四01:00:00 GMT+0100(中欧标准时间)
。你能给我一些第二条建议的例子吗?是的,只要你在进行ajax调用之前在全局范围内定义,
。@randomuser1,尽管我应该警告你,使用synchronus ajax请求通常不是一个好主意,因为它会使浏览器挂起,直到完成为止。重新编写代码以在回调中执行可能需要很多工作,但实际上,这是正确的方法。将async更改为false实际上更像是一个快速而肮脏的解决方法。@randomuser1,好吧,在我花了这么多时间帮助你之后,你会接受我的答案,对吗P好的,如果您从响应中得到“object object”,这意味着您的jQuery正在解析来自JSON的响应。代码中的任何内容都无法解释发生这种情况的原因,因此请尝试手动将响应解析回字符串,并告诉我发生了什么。将此添加为complete
函数的第一行,并告诉我发生了什么resp=JSON.stringify(resp)代码>@randomuser1哦,威尔德。好的,您正在查找responseText属性。所以,只需更改today=新日期(resp)代码>到<代码>今天=新日期(响应文本)代码>,并删除前面的JSON.stringify()
行,您就可以开始了:D
$.ajax({
'type': 'GET',
'url': 'timeoftheserver.php',
'complete': function(resp){
today = new Date(resp);
}
});