JS를 사용하여 시간 수정 및 현지 시간 가져오기에 버그가 있습니다.
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( )은 필수입니다. 동기화를 사용하세요.
요청 링크를 작성할 필요가 없습니다. 열기, 보내기, 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에는 다양한 처리를 용이하게 하는 4가지 상태가 있습니다.
0: 요청이 초기화되지 않았습니다
1: 서버 연결이 설정되었습니다
2: 요청 수신
3: 요청 진행 중
4: 요청 완료 및 응답 준비
실패 상태, 상태 값:
200 : "OK "
404: 페이지를 찾을 수 없습니다