2012-05-24 39 views
11

我试图让backbone.js删除请求触发,但没有看到我的控制台中发出的任何请求。Backbone.js DELETE请求不能触发

我有收集模型,像这样:

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

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

在我看来,我运行以下命令:

this.model.destroy(); 

似乎一切都运行良好,我可以看到输出remove函数来调用销毁,所以我知道它到达那里,并且它还成功运行了我拥有的不受指示的方法。虽然看不到任何要求服务器的请求?

回答

4

我发现问题到我的问题,认为还没有解决方案。我不确定这是否具有骨干问题,但我使用ajaxSetupajaxPrefilter。我试着评论它,它的工作。我将其缩小到ajaxSetup方法,特别是使用参数data来预设一些值。

+0

很高兴你知道了...... – jcreamer898

+0

如果有人只在Firefox中有“没有删除请求”的问题,但在Chrome中没有,那么很可能这就是你的问题。从'ajaxSetup'中删除'data:{}'后,一切都很好。谢谢,你做了我的一天。 –

1

您是否尝试过使用成功和错误回调?

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

如果您没有看到DELETE请求,可能会很有指导意义。

+1

这为我触发成功回调,但仍然没有请求到服务器。这非常奇怪,我认为它应该是开箱即用的,就像我错过了某种联系。 – Rob

+0

看起来你正在做的事情正确。如果刷新页面,请执行更改操作?另外,你是否已经介入确保代码实际上进入了jQuery Ajax调用?这有点奇怪,因为我自己还没有看到这种行为。 –

+0

所以在一些玩回调后,我看到错误回调response.statusText中的东西 - “[例外...”组件返回失败代码:0x80460001(NS_ERROR_CANNOT_CONVERT_DATA)“nsresult:”0x80460001(NS_ERROR_CANNOT_CONVERT_DATA)“位置:”JS框架:: http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js :: :: line 4“data:no]” - 显然这个url没有形成正确的,有无论如何查看它试图使用的网址? – Rob

12

如果我没有弄错,你必须在你的模型上有一个id属性,以确保它击中正确的url。也就是说,如果你的模型是......

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 

没有ID,它不知道如何正确建立链接,通常你会获取模型,或创建一个新的,并保存它,那么你” d有一个网址...

看看是否有帮助!

+0

是的,ID设置,我可以看到它,如果我输出this.model。 – Rob

+0

尝试在模型上使用'urlRoot:'/ some/url'' ...让我知道这是否可行... – jcreamer898

+0

我有url和urlRoot集,但仍然没有。我应该看到正确的萤火虫请求,还是我完全错过了什么? – Rob