我有一个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)。这应该有用吗?如果是这样,我还能尝试什么?如果没有,我做错了什么?
答案 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);
};