我在asp.net mvc頁面上使用了knockoutjs。我使用ajax通過調用ko.toJSON(viewModel)
將表單持久化回服務器,然後使用jQuery將結果發回服務器。視圖模型上的所有屬性都被成功序列化,除了保留爲空對象的Javascript日期之外。ko.toJSON()與日期一起工作嗎?
宣言:
var viewModel = {
startTime: ko.observable(),
type: ko.observable(),
durationInMinutes: ko.observable(),
notes: ko.observable()
};
保存數據:
var postData = ko.toJSON(viewModel);
$.ajax({
url: "/data",
type: "POST",
data: postData,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function() {
console.log('success!');
},
error: function() {
console.log('fail!');
}
});
viewModel.startTime()的執行console.log值爲:
Date {Tue May 10 2011 11:30:00 GMT-0500 (Central Daylight Time)}
保存數據的1號線後,POSTDATA的值是:
{
"startTime": {},
"type": "1",
"durationInMinutes": "45",
"notes": "asfasdfasdfasdfasdfasdfasdfas",
"displayableStartTime": "10-May 11:30"
}
如果我擴大保存數據線1到
var jsonEvent = ko.toJS(viewModel);
jsonEvent.startTime = viewModel.startTime();
var postData = JSON.stringify(jsonEvent);
POSTDATA的價值:
{
"startTime": "2011-05-10T16:30:00.000Z",
"type": "1",
"durationInMinutes": "45",
"notes": "asfasdfasdfasdfasdfasdfasdfas",
"displayableStartTime": "10-May 11:30"
}
任何人都可以解釋可能發生了什麼,以及我如何能夠得到knockoutjs來處理日期對象?
有一個問題記錄這一個位置:https://github.com/SteveSanderson /淘汰賽/問題/ 55。 你還好在最後一個例子中的格式? – 2011-05-10 04:10:30
優秀。謝謝! Wrt格式,是指完整的SaveData還是SaveData的第1行擴展?我是jquery,ajax和knockoutjs的新手,所以請隨時傳遞您的建議。第1行擴展基本上是一個無知的實現(讓框架做它的事情,然後修復不良的值)。 – Jason 2011-05-11 13:20:09
是的,如果那是你想要的價值,那麼下面的答案是另一種方法。祝你好運! – 2011-05-11 16:45:48