Я использую knockoutjs на странице asp.net mvc. Я использую ajax для сохранения формы обратно на сервер, вызывая ko.toJSON(viewModel)
, а затем отправляя результаты на сервер с помощью jQuery. Все свойства модели просмотра успешно сериализованы, за исключением даты Javascript, которая сохраняется как пустой объект.
Декларация:
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!');
}
});
Значение console.log для viewModel.startTime():
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 обрабатывать объект даты?