2016-06-17 4 views
1

일부 제품에는 입찰 웹 사이트가 있으며 서버 시간과 관련하여 남은 시간을 계산해야하는 카운트 다운 타이머가 있습니다.동기식 아약스 호출 문제가있는 Jquery 카운트 다운

다음은 카운트 다운을위한 jQuery이며 서버 시간을 얻기 위해 serverTime()이라는 ajax 함수를 호출하는 serverSync 특성을 확인합니다.

//Countdown Jquery 
$(".anything").countdown("change", { 
    until: $.countdown.UTCDate(0, year, month, day, hours, minutes, seconds, 0), 
    format:"dHMS", 
    serverSync: serverTime 
}); 

//The ajax function that is being called by the countdown script 
function serverTime() { 
    var time = null; 
    $.ajax({ 
     url: "serverTime.php", 
     async: false, 
     dataType: "text", 
     success: function(text) { 
      time = new Date(text); 
     }, error: function(http, message, exc) { 
      time = new Date(); 
     } 
    }); 
    return time; 
} 

카운트 다운이 다른 PC에서 페이지를 열면 카운트 다운이 예상대로 작동하지 않습니다. AJAX 함수 serverTime()에서 async: false을 제거하면 카운트 다운이 정상적으로 작동하지만 서버 시간이 아닌 PC 시간이 걸리기 때문에 다른 PC에 다른 타이머를 표시합니다.

이 문제에 대한 해결책이 필요합니다.

+1

** 동기 A (비동기 !!!) JAX 요청을 사용하지 마십시오 ** ** – VisioN

+0

대안? – Mohamad

답변

0

내가 고려해야 할 두 가지 측면이 있습니다 다음과 같은 솔루션

//Countdown Jquery 
$(".anything").countdown("change", { 
    until: $.countdown.UTCDate(0, year, month, day, hours, minutes, seconds, 0), 
    format:"dHMS", 
    serverSync: serverTime 
}); 

//The ajax function that is being called by the countdown script 
function serverTime() {   
    var jqxhr = $.ajax({ 
     url: "serverTime.php", 
     async: false, 
     dataType: "text", 
     type: "GET", // or "POST" 
    }); 

    // 'async' has to be 'false' for this to work 
    var response = {valid: jqxhr.statusText, data: jqxhr.responseText}; 

    if (response.valid == 'OK') 
    { 
     return new Date(response.data); 
    } 
    else 
    { 
     alert('not valid'); 
    } 
} 

을 찾고 생각 :와 다른 결과 후 응답을 확인 반환 : 하나는 아약스 (거짓 비동기를 설정하여) 동 기적으로 수행하도록 말하고있다 .

아약스 호출의 GET 또는 POST 메소드와 같은 유형은 언급하지 않았습니다. GET을 호출하여 설정했지만 POST로 시도해 보았습니다.

+0

시도했지만 문제가 해결되지 않았습니다. – Mohamad

+0

response.data 값을 확인 했습니까? 올바른 값이 맞지 않습니까? 파일 유형 serverTime.php가 반환되는 유형의 값은 무엇입니까? jqxhr (deffer) 때문에 응답을 얻는 데 타이밍 문제가 없다고 생각합니다. 올바른 값을 반환하는 –

+0

response.date. serverTime.php는 다음을 포함합니다 : format ("M j, Y H : i : s O"). "\ n"; ?> – Mohamad

관련 문제