2012-05-24 21 views
11

Estoy tratando de obtener la solicitud de DELETE de backbone.js para disparar, pero no veo ninguna solicitud en mi consola.Backbone.js DELETE solicitud no dispara

que tienen modelo de recogida de este modo:

var Model = Backbone.Model.extend(
{ 
    urlRoot: '/test', 
    defaults:{} 
}); 

var TableList = Backbone.Collection.extend(
{ 
    url: '/test', 
    model: Model 
}); 

En mi opinión estoy ejecutando esto:

this.model.destroy(); 

Todo parece estar funcionando bien, puedo ver una salida procedente de la función Remove eso llama a la destrucción así que sé que está llegando y además ejecuta con éxito un método de entrega que tengo. Sin embargo, ¿no puedes ver las solicitudes que se hacen al servidor?

Respuesta

4

He encontrado el problema a mi problema, pensé que aún no era una solución. No estoy seguro de que este sea un error con la red troncal o no, pero estoy usando ajaxSetup y ajaxPrefilter. Intenté comentarlo y funcionó. Lo reduje al método ajaxSetup y específicamente al uso del parámetro data para predefinir algunos valores.

+0

Me alegra que lo haya conseguido ... – jcreamer898

+0

Si alguien tiene el problema de "no eliminar solicitud" solo en Firefox pero no en Chrome, entonces es probable que este sea exactamente su problema. Después de eliminar 'data: {}' de 'ajaxSetup' todo estaba bien. Gracias, has hecho mi dia. –

1

¿Has probado el éxito y las devoluciones de errores?

this.model.destroy({ 
    success : _.bind(function(model, response) { 
        ...some code 
       }, this), 
    error : _.bind(function(model, response) { 
        ...some code 
       }, this); 
}); 

Puede ser instructivo si no está viendo una solicitud DELETE.

+1

Esto desencadena la devolución de llamada exitosa para mí, pero todavía no se solicita al servidor. Es muy extraño, pensé que se suponía que saldría de la caja, es como si me faltara algún tipo de conexión para esto. – Rob

+0

Parece que estás haciendo las cosas correctamente. Si actualiza su página, ¿los cambios se mantienen? Además, ¿ha intervenido para asegurarse de que el código llegue realmente a la llamada jquery ajax? Esto es un poco raro porque no he visto este comportamiento en absoluto. –

+0

Así que después de jugar con devoluciones de llamada, veo algo en la respuesta de respuesta de error.statusText - "[Excepción ..." Código de error devuelto por el componente: 0x80460001 (NS_ERROR_CANNOT_CONVERT_DATA) "nsresult:" 0x80460001 (NS_ERROR_CANNOT_CONVERT_DATA) "ubicación:" JS frame :: http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js :: :: línea 4 "datos: no]" - por lo que aparentemente la URL no se está formando correctamente, ¿hay alguna forma de ver la URL que intenta usar? – Rob

12

Si no me equivoco, debe tener una propiedad de identificación en su modelo para asegurarse de que llegue a la URL correcta. Es decir, si el modelo era ...

var Model = Backbone.Model.extend({ 
    url: '/some/url' 
}); 

var model = new Model({ 
    id: 1 
}); 
model.destroy(); // I THINK it will now try and DELETE to /some/url/1 

Sin un identificador que no sabe cómo construir la URL correctamente, por lo general desea buscar el modelo, o crear uno nuevo y lo guarda, entonces' d tiene una Url ...

Ver si eso ayuda!

+0

Sí, la ID está establecida, puedo verla en el si imprimo this.model. – Rob

+0

Intenta usar 'urlRoot: '/ some/url'' en tu modelo ... Avísame si eso funciona ... – jcreamer898

+0

Tengo url y urlRoot establecidos, pero todavía nada. Debería ver una solicitud hecha en Firebug ¿o me falta algo por completo? – Rob

Cuestiones relacionadas