2012-05-24 45 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