2013-02-02 71 views
1

方案骨幹集合加入等待後不更新:真正

我使用骨幹進行聯繫人管理。我有一個表單,當用戶輸入數據並按下提交按鈕時,用戶的數據將進入服務器並保存在數據庫中。

問題

它的工作,直到將它添加到數據庫中。但是,我也想在添加到數據庫後更新集合。由於這個原因,我正在使用以下幾行代碼來更新集合。

addContact: function (e) { 
    e.preventDefault(); 

    this.collection.create({ 
     first_name: this.$('#first_name').val(), 
     last_name: this.$('#last_name').val(), 
     email_address: this.$('#email_address').val(), 
     description: this.$('#description').val() 
    }, { wait: true }); 

    console.log(this.collection); 
} 

上面的函數確實會將數據添加到數據庫,但它不會更新集合。但是當我刪除{wait: true}時,它確實更新了這個集合。

問題

爲什麼wait: true不允許集合進行更新,我怎樣才能使它與wait: true工作?

UPDATE

我還添加了像回調函數遵循

{wait: true, success: this.successCallback} 

,並補充說,功能像這樣

successCallback: function (collection) { 
    console.log('call back'); 
    console.log(this.collection); 
} 

,但它顯示了這個功能在控制檯什麼?

UPDATE 2

誤差函數截圖

enter image description here

UPDATE 3

XHR截圖

enter image description here

回答

6

我有同樣的問題(甚至相同的代碼)。在我的後端我有:

Contact::create([ 
'first_name' => Input::get('first_name'), 
'last_name' => Input::get('last_name'), 
'email_address' => Input::get('email_address'), 
'description' => Input::get('description') 
]); 

它響應狀態200確定,但我的集合尚未更新。我搜索了很多,但沒有找到解決方案。

我的後端代碼什麼沒有回到劇本,所以我決定來測試是否返回不便會做出改變。 所以,我更新了我的後端代碼:

$contact = Contact::create([ 
'first_name' => Input::get('first_name'), 
'last_name' => Input::get('last_name'), 
'email_address' => Input::get('email_address'), 
'description' => Input::get('description') 
]); 
return $contact; 

而現在它的工作! 在這兩種情況下,請求均以200 OK響應,但只有當它返回數據時纔會觸發'成功'事件。

希望能幫到你。

+1

我有同樣的問題,這對我有用,但我不明白(即使在註釋源http://backbonejs.org/docs/backbone.html#section-62後)是爲什麼。我嘗試使用不同的ID返回對象(在服務器端使用調試器更改它)以查看是否觸發了刪除回覆,但這沒有什麼區別。我仍然試圖找出Backbone想要從集合中刪除元素的原因,以及爲什麼簡單的HTTP 200是不夠的。 – einnocent

+0

我一直都在爲這個整個下午而奮鬥,儘管我喜歡用jeffery的方法教程,試圖用這個來學習骨幹,但我不經意間必須學習足夠的laravel來修復所有像這樣的問題,我2天 - 大部分時間我的腦袋都在拉拉維爾附近,找到正確的方式來做後端,而不是實際上只是學習骨幹...... 2對於一個特殊的人來說,哈哈。 – pushplaybang

1

我的最佳猜測是,儘管服務器接受新創建的模型,但它無法響應狀態200.另外,我建議您檢查中的success函數中發生的情況,這將有助於您更準確地找到問題。

+0

首先,它在Chrome網絡工具的「網絡」選項卡中進行檢查後,狀態200確定響應。其次,我還添加了'success:this.successCallback',但它根本不調用這個函數。 – 2619

+0

再加上'error'回調,讓我們看看它有什麼作用。 – monshq

+0

你是對的。有一些錯誤。當我添加這個錯誤回調函數'errorCallback:function(){ \t \t console.log('error'); '它確實在控制檯中顯示錯誤。但是,我怎麼才能找到錯誤是什麼?對不起,我是中堅力量的新手。 – 2619