2015-09-01 28 views
0

我有一個KnockoutJS viewmodel我正在使用,並且發送一個JSON日期作爲GET請求中的一個參數給WebAPI顯然很困難。無法獲得ISO-8601 JSON DateTime以正確發送GET

我有以下發生在我的要求

var params = { 
    userId: currentUser, 
    startRange: ko.toJSON(self.selectedDate()), 
    endRange: ko.toJSON(self.selectedDate()) 
} 

$.ajax({ 
    type: "GET", 
    contentType: 'application/json; charset=utf-8', 
    cache: false, 
    dataType: 'json', 
    url: url, 
    data: params, 
    beforeSend: function (xhr, settings) { 
     sf.setModuleHeaders(xhr); 
    } 
}).done(function(data) { 

}).fail(function() { 

}).always(function() { 

}); 

在我的WebAPI控制器,開始和結束日期不斷想出空

public HttpResponseMessage GetViolationsInRange(int userId, DateTime? startRange, DateTime? endRange) 

檢查的要求,這是它輸出

/API/Cert/GetViolationsInRange?userId=20&startRange=%222015-09-01T04%3A00%3A00.000Z%22&endRange=%222015-09-01T04%3A00%3A00.000Z%22 

任何想法,爲什麼這種情況正在發生,爲什麼我一直被絆倒S'

編輯:看來,通過不使用jQuery的AJAX'數據'參數,只是將值附加到URL,它不會逃避JSON表示。有沒有一種乾淨的方式來做什麼jQuery沒有手動追加它們添加GET參數?

+0

你爲什麼得到URL中的'%22'部分(轉義引號)?你嘗試刪除它們嗎? –

+0

當GET發生時,它就是通過它來的。帶有「params」對象的$ .ajax轉義到此。我假設這就是爲什麼日期也是空的。 – dgarbacz

+2

嗯,而不是假設它,我會嘗試手動與更期望的網址 - 然後,如果這有效(我希望它會),你可以改變AJAX以避免逃跑。 –

回答

0

嘗試刪除使用ko.toJSON()。 日期將是您的params對象的屬性。

jquery with dataType:'json'會正確轉換日期對象。