Soy nuevo en Backbone.js y estoy tratando de guardar una instancia de modelo. Estoy usando django como mi servidor. Código ladoGuardando los datos del modelo Backbone.js. Datos no enviados correctamente
Cliente:
var Song = Backbone.Model.extend({
defaults: {
name: 'New Song'
},
url: function() {
return window.location.href;
}
});
var song = new Song()
song.save()
csrfmiddlewaretoken
está configurado correctamente antes de enviar los datos.
Pasé por la función jQuery $ .ajax llamada internamente por Backbone.sync y encontré que el objeto modelo contiene los datos correctos.
Sin embargo, el request.POST
recibido por el servidor es
POST:<QueryDict: {u'[object Object]': [u'']}>
en lugar de los datos reales. ¿Alguna idea de dónde me estoy equivocando?
Actualización: Hice una solución rápida al establecer Backbone.emulateJSON
en verdadero. Pero de acuerdo con los comentarios en el código Backbone (0.9.2) está destinado a servidores heredados. Estoy usando Django 1.4.1. ¿Significa que django 1.4.1 es incompatible?
Actualización 2: Cuando fijo Backbone.emulateJSON
-false
, me sale el siguiente error en Firefox pero fracasa en silencio en cromo.
"[Exception... "Component returned failure code: 0x80460001
(NS_ERROR_CANNOT_CONVERT_DATA)" nsresult: "0x80460001 (NS_ERROR_CANNOT_CONVERT_DATA)"
location: "JS frame :: http://localhost:8000/static/jquery.js :: <TOP_LEVEL> :: line 8214" data: no]"
estoy usando jQuery para el Ajax como el preferido por la espina dorsal y parece que el error puede estar en jQuery.
Actualización 3: Lo resolvé anulando el $ .ajax utilizado por Backbone.sync con el mío. Todavía es una solución rápida.
Backbone.js Verson: 0.9.2
jQuery versión: 1.8.0. También intenté con 1.7.2. Mismo resultado.
Puede ver su panel de red y ver los datos que se publican en su servidor. No estoy familiarizado con Django, pero su problema definitivamente parece un problema del lado del servidor y no es un problema con Backbone. – TYRONEMICHAEL
@TyroneMichael Gracias por la sugerencia. El panel de red en cromo muestra que el modelo se envía como un objeto simple en Carga de solicitud. Pero en Firefox obtuve el error escrito en la Actualización 2. – Pramod
No creo que los datos se envíen como una cadena (Eche un vistazo [aquí] (http://communities.rightnow.com/posts/9580c78607)). ¿Obtiene este error cuando Emulate JSON es falso? ¿Qué sucede en FF cuando comenta Emulate JSON = false? – TYRONEMICHAEL