2010-04-09 2 views
0

serverSync: serverTime Возвращаемое значение функции с сервера, но я проверил, как время сервера, так и время клиента одинаковы. Когда я позвонил серверу для синхронизации с сервером, он не будет отображать обратный отсчет. Помоги мне ?Проблема с jQuery Countdown? Функция serverSync: serverTime

$(function() { 
     var shortly = new Date(); 
     var newTime = new Date('April 9, 2010 20:38:10'); 
     //for loop divid 
     /// 
     $('#defaultCountdown').countdown({ 
      until: shortly, onExpiry: liftOff, onTick: watchCountdown, serverSync: serverTime 
     }); 
     $('#div1').countdown({ until: newTime }); 
    }); 
    function serverTime() { 
     var time = null; 
     $.ajax({ 
      type: "POST", 
      //Page Name (in which the method should be called) and method name 
      url: "Default.aspx/GetTime", 
      // If you want to pass parameter or data to server side function you can try line 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      data: "{}", 
      async: false, 
      //else If you don't want to pass any value to server side function leave the data to blank line below 
      //data: "{}", 
      success: function(msg) { 
       //Got the response from server and render to the client 

       time = new Date(msg.d); 
       alert(time); 
      }, 
      error: function(msg) { 
       time = new Date(); 
       alert('1'); 
      } 
     }); 
     shortly = time; 
     return time; 

    } 
[WebMethod] 
public static String GetTime() 
{ 
    DateTime dt = new DateTime(); 
    dt = Convert.ToDateTime("April 9, 2010 22:38:10"); 
    return dt.ToString("dddd, dd MMMM yyyy HH:mm:ss"); 
} 
+0

дубликатом вопрос: http://stackoverflow.com/questions/2609028/here-is-my-code-in-jquery-and-asp-net-unable-to-get-a-correct-ans -as-i-am-gettin и http://stackoverflow.com/questions/2608389/unable-to-get-a-correct-time-when-i-am-calling-servertime-using-jquery-countdown – dochoffiday

ответ

0

Вы не должны называть ServerTime() здесь -

$('#defaultCountdown').countdown({ 
    until: shortly, onExpiry: liftOff, onTick: watchCountdown, serverSync: serverTime 
}); 

Как это:

$('#defaultCountdown').countdown({ 
    until: shortly, onExpiry: liftOff, onTick: watchCountdown, serverSync: serverTime() 
}); 
+0

I но он не отобразил вывод –

+0

Попытайтесь узнать, не исходит ли что-то от этой функции. var a = serverTime(); оповещения (а); –

+0

да, это покажет время, но отсчет обратного отсчета до 0: 0: 0 –

0
async: true, 

Это решит проблему, но она не будет синхронным. Может быть, кто-то еще может понять, почему async: false, сломает это? Я понятия не имею.

1

Я понимаю, что это почти год, но в случае, если у кого-то есть аналогичная проблема, я подумал о решении, которое позволит избежать сложности AJAX. Поскольку мы используем дату на сервере, нам не нужно беспокоиться о времени на клиенте, поэтому нам не нужно настраивать часовой пояс или часы клиентов. Он должен быть таким же точным, как и латентность сети.

<script type="text/javascript"> 
    jQuery(document).ready(
     function() { 
      var eventTime = new Date('March 20, 2011 08:00:00'); 
      jQuery('#div_countdown').countdown({ until: eventTime, 
       serverSync: function() { return new Date('<%=DateTime.Now.ToString("dddd, dd MMMM yyyy HH:mm:ss")%>'); } 
      }); 
     } 
    ); 
</script> 
Смежные вопросы