model.save(), collection.create()
當我調用這兩件事情時,客戶端發送帶有模型數據的POST請求到我的服務器。真棒。但是如果我想添加一個屬性呢?在Backbone.js中,如何在每次有POST請求時向params添加屬性?
我想在向我的服務器發送POST請求之前向數據添加「csrf_token:12345」。
我該如何添加?自動?我希望這發生在我所有的視圖中。
model.save(), collection.create()
當我調用這兩件事情時,客戶端發送帶有模型數據的POST請求到我的服務器。真棒。但是如果我想添加一個屬性呢?在Backbone.js中,如何在每次有POST請求時向params添加屬性?
我想在向我的服務器發送POST請求之前向數據添加「csrf_token:12345」。
我該如何添加?自動?我希望這發生在我所有的視圖中。
最好的辦法是使用jQuery的ajaxSetup
方法將csrf_token添加到每個請求。
這是因爲加入這一行的代碼即可(外的你的骨幹代碼):
$.ajaxSetup({ data: { 'csrf_token' : '12345' }});
由於骨幹網使用jQuery的爲所有的AJAX通訊,csrf_token將包括在每個Ajax請求。
有關更多信息,請參閱此blog post。
也許下面將做的伎倆:
CSRFAwareModel = Backbone.Model.extend({
defaults: {
'csrf_token': getToken()
}
});
MyModel = CSRFAwareModel.extend({
...
});
收藏呢? – TIMEX 2012-01-30 08:54:55
'collection.create()'將使用'model.save()'來保存模型,所以如果你的集合使用'model:CSRFAwareModel',那麼'csrf_token'將被自動包含。 – yatskevich 2012-01-30 08:59:39
這比yatskevich的解決方案好嗎? – TIMEX 2012-02-01 11:08:22
Rails使用ajaxSetup爲所有ajax請求設置csrf_token,所以我會說這是一個更好的解決方案。 – Paul 2012-02-01 14:41:48