Force Backbone fetch始终使用POST

时间:2013-03-11 22:32:45

标签: javascript backbone.js

我有一个Collection需要将一些数据发送到其url以获取所需的数据。这两个问题Fetch a collection using a POST request?Overriding fetch() method in backbone model的答案使我觉得应该可以让它像这样工作:

fetch: function( options ) {
  this.constructor.__super__.fetch.apply(this, _.extend(options,{data: {whatever: 42}, type: 'POST'}));
}

,但Firebug仍然显示我发生了404错误,因为正在针对相关网址执行GET(并且底层的Rails路由仅允许POST)。这应该有用吗?如果是这样,我还能尝试什么?如果没有,我做错了什么?

1 个答案:

答案 0 :(得分:14)

再次阅读问题后,这是一种强制获取每次获取调用使用POST的方法。 (感谢您的评论)

yourCollection.fetch({
    data: $.param({id: 1234}), 
    type: 'POST', 
    success: function(d){
        console.log('success');
    }
});

另一种方法是覆盖AJAX实现本身,以便对所有调用使用POST

Backbone.ajax = function() {
    var args = Array.prototype.slice.call(arguments, 0);
    _.extend(args[0], { type: 'POST' });
    return Backbone.$.ajax.apply(Backbone.$, args);
};