这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
这篇文章主要介绍了 JavaScript 获取服务器端时间的方法, 非常不错,具有参考借鉴价值,需要的朋友可以参考下
用 js 做时间校正,获取本机时间,是存在 bug 的。
使用 js 也可获取到服务器时间,原理是使用 ajax 请求,返回的头部信息就含有服务器端的时间信息,获取到就可以了。以下:
1、依赖 jQuery
代码:
- function getServerDate() {
- return new Date($.ajax({
- async: false
- }).getResponseHeader("Date"));
- }
以上函数返回的就是一个 Date 对象,注意在使用 ajax 时必须同步,要不然无法返回时间日期。
无需填写请求链接;
如果服务器时间和本地时间有时差,需要做校正。
2、原生
代码:
- function getServerDate(){
- var xhr = null;
- if(window.XMLHttpRequest){
- xhr = new window.XMLHttpRequest();
- }else{ // ie
- xhr = new ActiveObject("Microsoft")
- }
- xhr.open("GET","/",false)//false不可变
- xhr.send(null);
- var date = xhr.getResponseHeader("Date");
- return new Date(date);
- }
同样返回的是一个 Date 对象,xhr.open() 必须使用同步;
无需填写请求链接; open,send,和 getResponseHeader 必须按序编写。
如需使用异步请求,可监听 onreadystatechange 状态来做不同的操作。
代码如下:
- function getServerDate(){
- var xhr = null;
- if(window.XMLHttpRequest){
- xhr = new window.XMLHttpRequest();
- }else{ // ie
- xhr = new ActiveObject("Microsoft")
- }
- xhr.open("GET","/",true);
- xhr.send(null);
- xhr.onreadystatechange=function(){
- var time,date;
- if(xhr.readyState == 2){
- time = xhr.getResponseHeader("Date");
- date = new Date(time);
- console.log(date);
- }
- }
- }
使用异步不是很方便返回时间。
这里的 readyState 有四种状态,方便做不同处理:
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
失败状态,status 的值:
200: "OK"
404: 未找到页面
以上所述是小编给大家介绍的 JavaScript 获取服务器端时间的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 phperz 网站的支持!
来源: http://www.phperz.com/article/17/0517/330081.html