Force Backbone fetch始终使用POST

cbm*_*ica 9 javascript backbone.js

我有一个Collection需要将一些数据发送到其url以获取所需的数据.这两个问题的答案是,使用POST请求获取集合?重写fetch()方法中的骨干机型,使它看起来像我应该能够得到像这样的工作:

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

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

Den*_*ngo 16

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

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

另一种方法是覆盖AJAX实现本身以POST用于所有调用.

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