2016-01-20 22 views
-1

我有一個下拉列表,我需要填充從ajax調用傳遞的日期時間值。填充的值如下所示:「/ date1234847269 /」而不是實際日期。我只需要將日期傳遞到下拉列表中。我不需要也在控制器返回的日期時間值中的時間戳。返回使用Ajax下拉日期時間列表

我不確定jQuery是否在處理c#日期時間值而不是字符串方面有問題。任何幫助,將不勝感激。由於

筆者認爲:

<select id="ddlDate" class="form-control bold"> 
    <option value='0'>--Select Date--</option> 
</select> 

我的AJAX調用:

function loadDateDDL(historicalIsChecked, monthlyIsChecked) { 
    $.ajax({ 
     type: 'POST', 
     url: '@Url.Action("GetGroupReportDates")', 
     dataType: 'json', 
     data: { isMonthly: monthlyIsChecked }, 
     success: function (returnData) { 
      convertDate(returnData); 
      $("#ddlDate").empty(); 
      $("#ddlDate").append("<option value='0'>--Select Date--</option>"); 
          $.each(returnData, function (value, key) { 
           $("#ddlDate").append($("<option></option>") 
                .attr("value", value).text(key)); 
          }); 
      //alert(returnData); 
     }, 
     error: function (ex) { 
      alert('Failed to retrieve dates.' + ex); 
     } 
    }); 
} 

function convertDate(returnData) 
    { 
     var date = new Date(returnData); 
     return date; 
    } 

我的控制器:

public JsonResult GetGroupReportDates (Boolean isMonthly) 
{ 
    List<DateTime> reportDates = RealmsModel.RealmsAuditDataInterface ().GetGroupQueryRptDates (isMonthly); 

    return new JsonResult () 
    { 
     Data = reportDates, 
     MaxJsonLength = Int32.MaxValue 
    }; 
} 

更新2016年1月21日:

我現在傳遞我的json數據「returnDa TA」下面的JavaScript函數並將其轉換基於另一種疊後:How do I format a Microsoft JSON date?

function convertDate(returnData) 
    { 
     var date = new Date(returnData); 
     return date; 
    } 

現在,這給我的錯誤‘date = Invalid Date {}, returnData = ["/Date(1451628000000)/"]’。我覺得我正在接近。任何幫助表示讚賞。

回答

0

你看到的格式是格式化日期的舊「微軟」方式。有兩種方法可以解決它。

一種方法是使用JSON.Net串行器而不是內置的JavaScriptSerializer,因爲它(從版本4.5起)格式化日期以便它們可以被自動分析。

另一個(更快)的方法就是從當前格式的日期中提取數字,並將它們傳遞給一個新的javascript Date對象。

function toDate(value) { 
    return new Date(parseInt(/Date\(([^)]+)\)/.exec(value)[1], 10)); 
} 
+0

根據您的評論,我發現另一組問題:http://stackoverflow.com/questions/206384/format-a-microsoft-json-日期 我試過了:var date = new Date(returnData);我得到無效日期...任何想法? – coggicc

+0

您仍然需要從字符串中提取數字('/ Date \(([^)] +)/ .exec(value)[1]')並將其解析爲一個int('parseInt({value} ,10)')。您不能僅將「/ Date(1451628000000)/」傳遞給Date構造函數。 – christophano

+0

這只是返回「returnData = [」/ Date(1451628000000)/「]」,這是傳遞給你的函數的東西。 – coggicc

0

我解決了這個有以下幾點:

function convertDate(returnData) 
{ 
    var pattern = /Date\(([^)]+)\)/; 
    var results = pattern.exec(returnData); 
    var dt = new Date(parseFloat(results[1])); 
    return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear(); 
} 
+0

這個答案和我的一樣,除了最後一行的日期格式。 – christophano

+0

將最後一行添加到您的答案中,我會標記您的答案是正確的。 – coggicc