Rob
Rob

Reputation: 11388

Backbone.js DELETE request not firing

I'm trying to get the backbone.js DELETE request to fire, but don't see any requests being made in my console.

I have collection model like so:

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

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

In my view I'm running this:

this.model.destroy();

Everything seems to be running fine, I can see output coming from the remove function that calls the destroy so I know it's getting there plus it also successfully runs an unrender method that I have. Can't see any requests being made to the sever though?

Upvotes: 12

Views: 12181

Answers (3)

Rob
Rob

Reputation: 11388

I found the issue to my problem, thought not a solution yet. I'm not sure this is a bug with backbone or not, but I'm using ajaxSetup and ajaxPrefilter. I tried commenting it out and it worked. I narrowed it down to the ajaxSetup method and the specifically the use of the data parameter to preset some values.

Upvotes: 4

jcreamer898
jcreamer898

Reputation: 8189

If I am not mistaken, you have to have an id property on your model to ensure that it hits the correct url. IE if your model was...

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

Without an id it doesn't know how to build the url correctly, typically you'd fetch the model, or create a new one and save it, then you'd have a Url...

See if that helps!

Upvotes: 14

Brendan Delumpa
Brendan Delumpa

Reputation: 1145

Have you tried using success and error callbacks?

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

Might be instructive if you're not seeing a DELETE request.

Upvotes: 1

Related Questions