在Backbone.js中,每次有POST请求时,我该如何将一个属性添加到参数中?

4
model.save(), collection.create()

当我调用这两个东西时,客户端会向我的服务器发送带有模型数据的POST请求。很棒。但是如果我想添加一个属性呢?我想在将POST请求发送到我的服务器之前添加“csrf_token: 12345”的数据。我该如何添加呢?自动完成?我希望所有的视图都可以实现这一点。
2个回答

0

可能以下代码可以解决问题:

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

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

collection.create() 将使用 model.save() 来保存您的模型,因此如果您的集合使用 model: CSRFAwareModel,则 csrf_token 将自动包含在其中。 - yatskevich

0
最好的选择是使用jQuery的ajaxSetup方法将csrf_token添加到每个请求中。
只需添加这行代码(在您的Backbone代码之外)即可轻松实现:
$.ajaxSetup({ data: { 'csrf_token' : '12345' }});

由于Backbone在所有的ajax通信中使用jQuery,因此csrf_token将包含在每个ajax请求中。

有关更多信息,请参见博客文章


这个比雅茨克维奇的解决方案更好吗? - TIMEX
Rails使用ajaxSetup为所有ajax请求设置csrf_token,所以我认为这是一个更好的解决方案。 - Paul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接