Estoy usando knockoutjs en una página asp.net mvc. Estoy usando ajax para persistir un formulario de regreso al servidor llamando al ko.toJSON(viewModel)
y luego publicando los resultados en el servidor usando jQuery. Todas las propiedades del modelo de vista se serializaron con éxito, excepto la fecha de Javascript, que se conserva como un objeto vacío.¿Ko.toJSON() funciona con fechas?
Declaración:
var viewModel = {
startTime: ko.observable(),
type: ko.observable(),
durationInMinutes: ko.observable(),
notes: ko.observable()
};
Guardar datos:
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!');
}
});
El valor de console.log viewModel.startTime() es:
Date {Tue May 10 2011 11:30:00 GMT-0500 (Central Daylight Time)}
Después de la línea 1 del Guardar datos, el valor de Postdatum es:
{
"startTime": {},
"type": "1",
"durationInMinutes": "45",
"notes": "asfasdfasdfasdfasdfasdfasdfas",
"displayableStartTime": "10-May 11:30"
}
Si amplío la línea 1 del Guardar datos a
var jsonEvent = ko.toJS(viewModel);
jsonEvent.startTime = viewModel.startTime();
var postData = JSON.stringify(jsonEvent);
El valor de Postdatum es :
{
"startTime": "2011-05-10T16:30:00.000Z",
"type": "1",
"durationInMinutes": "45",
"notes": "asfasdfasdfasdfasdfasdfasdfas",
"displayableStartTime": "10-May 11:30"
}
¿Alguien puede explicar lo que podría estar pasando y cómo podría obtener knockouts para manejar el objeto de fecha?
hay un problema registrado para este de aquí: https://github.com/SteveSanderson/knockout/issues/55. ¿Estás de acuerdo con el formato en tu último ejemplo? –
Excelente. ¡Gracias! Formato Wrt, ¿te refieres a la extensión completa SaveData o la línea 1 de SaveData? Soy nuevo en jquery, ajax y knockoutjs, así que no dude en transmitir cualquier consejo que pueda tener. La expansión de la línea 1 es básicamente una implementación por ignorancia (deje que el framework haga lo suyo y luego corrija el mal valor). – Jason
Sí, si ese es el valor que desea, la siguiente respuesta sería otra forma de hacerlo. ¡Buena suerte! –