从WCF ajax调用数据时,我在哪里可以转换JSON日期格式?

时间:2013-05-02 19:58:06

标签: json jquery handsontable

我从WCF服务获取JSON数据,如下格式。然后我将这些数据绑定到handsOnTables。

JSON

{"d":[
  { "__type":"InitData:#company.ReductionData",
    "Owner":"test9",
    ...
    ... 
    "StartDate":"\/Date(1366848000000+0000)\/",
    "Risks":"test9",
 }] }

的JScript

$(function () {

         var $value = $("#Body_hiddenClientId");
        // alert($value.val());
         var $container = $("#dataTable");

         $container.handsontable({
             contextMenu: true,
             startRows: 1,
             minRows: 1,                 
             colHeaders: true,
             stretchH: 'all',     
             columns: [
                 { data: 'Owner' },
                 ...
                 ....
                 { data: 'StartDate', type: 'date', dateFormat: 'mm/dd/yy' },
                 { data: 'Risk' }                   
               ]
         });

         var handsontable = $container.data('handsontable');
         $.ajax({
             url: "/EditInitiatives.svc/GetGridData",
             data: "session=" + $value.val(),
             type: "GET",
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             success: function (res) {                   
                 $container.handsontable('loadData', res.d);    
             },
             error: function (error) {
                 alert("Error: " + error.responseText);
             }
         });
     });

我不知道如何转换为'mm/dd/yy'格式?在代码中转换格式的位置?

2 个答案:

答案 0 :(得分:0)

handsontable 期望字符串格式化日期。 你应该把它转换成适当的形式。

尝试这样的事情:

改变这个:

...
success: function (res) {                  
    $container.handsontable('loadData', res.d);    
},
...

用这个:

...
success: function (res) {
    for(var i in res.d) {
        // get the milliseconds from your string "StartDate":"\/Date(1366848000000+0000)\/",
        // and create new Date object
        var date = new Date(+(res.d[i]['StartDate'].match(/\d+/i))); 
        // then put it back with format mm/dd/yy            
        res.d[i]['StartDate'] = (date.getMonth() + 1) + '-' + date.getDate() + date.getFullYear();
    }               
    $container.handsontable('loadData', res.d);    
},
...

答案 1 :(得分:0)

您也可以在转换服务器端将其格式化为所需的字符串。以下是我在使用C#时使用WCF服务的一些代码:

        var adList = someSource
            .Select(ad => new
            {
                WhenTransacted = ad.WhenTransacted.HasValue ? ad.WhenTransacted.Value.ToString("MM/dd/yy") : string.Empty,
                Amount = ad.Amount,
                Reference = ad.Reference,
            })
            .ToList();
        return JsonConvert.SerializeObject(adList);