2012-01-30 62 views
4
model.save(), collection.create() 

當我調用這兩件事情時,客戶端發送帶有模型數據的POST請求到我的服務器。真棒。但是如果我想添加一個屬性呢?在Backbone.js中,如何在每次有POST請求時向params添加屬性?

我想在向我的服務器發送POST請求之前向數據添加「csrf_token:12345」。

我該如何添加?自動?我希望這發生在我所有的視圖中。

回答

0

最好的辦法是使用jQuery的ajaxSetup方法將csrf_token添加到每個請求。

這是因爲加入這一行的代碼即可(外的你的骨幹代碼):

$.ajaxSetup({ data: { 'csrf_token' : '12345' }}); 

由於骨幹網使用jQuery的爲所有的AJAX通訊,csrf_token將包括在每個Ajax請求。

有關更多信息,請參閱此blog post

+0

這比yatskevich的解決方案好嗎? – TIMEX 2012-02-01 11:08:22

+0

Rails使用ajaxSetup爲所有ajax請求設置csrf_token,所以我會說這是一個更好的解決方案。 – Paul 2012-02-01 14:41:48

0

也許下面將做的伎倆:

CSRFAwareModel = Backbone.Model.extend({ 
    defaults: { 
     'csrf_token': getToken() 
    } 
}); 

MyModel = CSRFAwareModel.extend({ 
    ... 
}); 
+0

收藏呢? – TIMEX 2012-01-30 08:54:55

+0

'collection.create()'將使用'model.save()'來保存模型,所以如果你的集合使用'model:CSRFAwareModel',那麼'csrf_token'將被自動包含。 – yatskevich 2012-01-30 08:59:39

相關問題