2012-09-10 45 views
1

我正在關注如下所示的jQuery日曆示例,並試圖從我的SQL數據庫中加載日期而不是硬編碼值示例,不知道最佳方法是什麼,但我正在使用Ajax發佈到我的web方法並獲取數據。來自數據庫的數據將被加載到一個數據表中,但問題是我不知道我的SQL數據應該以什麼格式存儲,以便當我檢索它並將它返回給我的Ajax調用時,它可以替換「new Date( y,m,2)「。使用AJAX將日期從SQL服務器傳遞給jQuery日曆

請協助。謝謝。

<script type='text/javascript'> 

    $(document).ready(function() { 

     var date = new Date(); 
     var d = date.getDate(); 
     var m = date.getMonth(); 
     var y = date.getFullYear(); 

     var sDate; 
     $.ajax({ 
      type: "POST", 
      url: "/WebServices/Services.asmx/GetString", 
      contentType: "application/json; charset=utf-8", 
      async: false, 
      dataType: "json", 
      success: function (result) { sDate = result.d; } 
     }); 
     alert(sDate); 

     $('#calendar').fullCalendar({ 
      header: { 
       left: 'prev,next today', 
       center: 'title', 
       right: 'month,basicWeek,basicDay' 
      }, 
      editable: true, 
      events: [ 
       { 
        title: 'Click for Google', 
        start: new Date(y, m, 2), // Hardcoded date 
        url: 'http://google.com/' 
       } 
      ] 
     }); 
    }); 

</script> 

     [WebMethod] 
     public string GetString() 
     { // Dump data from SQL database into DataTable 
      DataTable table = new DataTable(); 
      table.Columns.Add("Date", typeof(DateTime)); 
      table.Rows.Add(DateTime.Now); 
      return table; 
     } 
+0

您正在使用哪種數據庫/服務器端語言?數據庫中有可用於保存日期的時間戳和日期時間數據類型。您的服務器端語言應該解析日期以符合您對前端的要求。 –

+0

你知道,'sDate'在ajax回調完成之前是不可用的,所以在你的例子中alert一直是空的。 – David

回答

0

Date()構造函數可以採用許多不同的參數。毫秒是相當穩定的,但是如果你的數據庫存儲了Unix時間戳,記得在你調用Date構造函數之前將它轉換爲毫秒(用1000乘以)。

旁註:您的代碼無法按預期工作,因爲sDate在ajax回調完成之前不可用。您需要執行以下操作:

$.ajax({ 
    type: "POST", 
    url: "/WebServices/Services.asmx/GetString", 
    contentType: "application/json; charset=utf-8", 
    async: false, 
    dataType: "json", 
    success: onSuccess 
}); 

function onSuccess(result) { 
    $('#calendar').fullCalendar({ 
     header: { 
      left: 'prev,next today', 
      center: 'title', 
      right: 'month,basicWeek,basicDay' 
     }, 
     editable: true, 
     events: [ 
      { 
       title: 'Click for Google', 
       start: new Date(result.d*1000), // assuming UNIX time 
       url: 'http://google.com/' 
      } 
     ] 
    }); 
} 
相關問題