js获取服务器端时间
2016-03-25 10:10
309 查看
Javascript是运行在客户端的脚本,我们一般都用new Date()来获取当前时间,但是得到的是客户端的时间,客户端时间是随意更改的,如果要做一个产品发布倒计时的话,客户端时间一改,就要闹笑话了。业务中需要用到服务器时间的场景还有很多,那么仅仅通过js怎么拿到服务器时间呢?事实上,只需要一个ajax请求就搞定,通过读取XMLHttpRequest对象的请求头里面的时间戳得到当前服务器时间!
原理就是这么简单:通过ajax向服务器发送请求,当服务器收到请求后即可读取请求头的时间戳了,不管请求成功或失败,都可以拿到时间戳。怎么判断服务器收到请求了呢?当ajax请求发送之后,XMLHttpRequest有5中状态变化:
XMLHttpRequest.readyState值 表示的意思
0 未初始化,已经创建一个XMLHttpRequest对象,但是还没有初始化
1 未发送,代码已经调用了xmlhttprequest open()方法并且xmlhttprequest已经准备好把一个请求发送到服务器
2 已发送,已经通过send()方法把一个请求发送到服务器端,但是还没有收到一个响应,可以读取请求头信息了
3 正在接收,已经接收到http响应头部信息,但是消息体部分还没有完全接收完毕
4 已加载,响应已经被完全接收
通过监听XMLHttpRequest的readystatechange事件来判断当前处于哪种状态,从表中可以看出,当XMLHttpRequest.readyState值为2时就可以读取请求头拿到我们要的时间戳了。代码如下:
原理就是这么简单:通过ajax向服务器发送请求,当服务器收到请求后即可读取请求头的时间戳了,不管请求成功或失败,都可以拿到时间戳。怎么判断服务器收到请求了呢?当ajax请求发送之后,XMLHttpRequest有5中状态变化:
XMLHttpRequest.readyState值 表示的意思
0 未初始化,已经创建一个XMLHttpRequest对象,但是还没有初始化
1 未发送,代码已经调用了xmlhttprequest open()方法并且xmlhttprequest已经准备好把一个请求发送到服务器
2 已发送,已经通过send()方法把一个请求发送到服务器端,但是还没有收到一个响应,可以读取请求头信息了
3 正在接收,已经接收到http响应头部信息,但是消息体部分还没有完全接收完毕
4 已加载,响应已经被完全接收
通过监听XMLHttpRequest的readystatechange事件来判断当前处于哪种状态,从表中可以看出,当XMLHttpRequest.readyState值为2时就可以读取请求头拿到我们要的时间戳了。代码如下:
相关文章推荐
- 详解Javascript继承的实现
- 【web】js keycode指令
- JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
- 一款全兼容的播放器 videojs
- js 浮点运算出现的精度丢失问题
- js根据url得到参数值
- JavaScript中getBoundingClientRect()方法详解
- Windows 系统下json 格式的日志文件发送到elasticsearch
- javascript-2.function(1)
- JS定义二维数组的三种方法
- 很赞的js许愿墙 类似后盾网
- js 判断传递的元素是否为空
- JavaScript的事件代理
- Angular JS中自定义标签 属性绑定的解释
- document.cookie.indexof的解释
- JS获取整个网页html代码
- JavaScript修改作用域外变量的方法
- 十大javaScript框架
- JS根据userAgent值来判断浏览器的类型及版本
- JavaScript 2048 游戏实例代码(简单易懂)