2014-03-28 20 views
0

我有jquery ajax函數來獲取日期值來倒數對象。 該代碼正常工作。當分析日期倒計時工作時,只會在設置日期之前插入警報至倒計時方法。jQuery不返回結果如果沒有在腳本中包含警報

這是腳本:

<script type="text/javascript"> 
     $(document).ready(function() { 
      debugger; 
      var austDay = new Date(); 
      var currDay = new Date(); 
      $.ajax({ 
       type: 'GET', 
       url: '/Service/Utility/GetDownDate', 
       success: function (data) { 
        austDay = new Date(parseInt(data.newDate.substr(6))); 
        //alert(austDay); 
       } 
      }); 

      austDay = new Date(austDay.getFullYear(), 1 - 1, 26); 
      alert(austDay); 

      $('#defaultCountdown').countdown({ until: austDay }); 
      $('#year').text(austDay.getFullYear()); 
     }); 
    </script> 

請幫助我。 謝謝,

+0

在控制檯?任何錯誤,我認爲你應該聲明'austDay' document.ready函數之外。 –

回答

2

由於ajax是異步的,您需要使用成功事件來獲取數據。嘗試像這樣

<script type="text/javascript"> 
    $(document).ready(function() { 
     debugger; 
     var austDay = new Date(); 
     var currDay = new Date(); 
     $.ajax({ 
      type: 'GET', 
      url: '/Service/Utility/GetDownDate', 
      success: function (data) { 
       austDay = new Date(parseInt(data.newDate.substr(6))); 
       //alert(austDay); 
       austDay = new Date(austDay.getFullYear(), 1 - 1, 26); 
       $('#defaultCountdown').countdown({ until: austDay }); 
       $('#year').text(austDay.getFullYear()); 
      } 
     }); 

    }); 
</script> 

其實它不alert()做魔術。如果您發出警報,則在用戶單擊確定按鈕之前,成功事件將以較少的時間間隔發生。

+1

'成功:'已棄用,您應該使用'.done'代替。請參閱https://api.jquery.com/jQuery.ajax/ – DHS

+1

@DHS:「ajax」的成功選項(以上使用的是Anoop)不會被棄用。 'jqXHR'對象上的'success' *方法('ajax' *返回的*)已被棄用,取而代之的是替代它的'Promise'方法。 –

+0

我試過這個,但倒數也沒有在這種類型的工作。 – user2710638

0

嘗試這樣的事情

$(document).ready(function() { 
    debugger; 
    var austDay = new Date(); 
    var currDay = new Date(); 
    $.ajax({ 
     type: 'GET', 
     url: '/Service/Utility/GetDownDate', 
     success: function (data) { 
      austDay = new Date(parseInt(data.newDate.substr(6))); 
      austDay = new Date(austDay.getFullYear(), 1 - 1, 26); 

      $('#defaultCountdown').countdown({ until: austDay }); 
      $('#year').text(austDay.getFullYear()); 
     } 
}); 

原因

您呼叫AJAX,它的工作是異步的,所以你的countdown()是你的Ajax完成之前執行。 當你把警報它得到時間來完成ajax調用,直到你點擊確定按鈕,然後countdown()執行

+0

看起來Anoop首先完成了比賽。 – Paul

+0

我現在這樣試着倒計時顯示沒有; – user2710638

+0

alert(data.newDate.substr(6))看看你在成功 –