一种方式来做到这一点是压倒一切的Backbone.sync
var _sync = Backbone.sync;
Backbone.sync = function(method, model, options) {
options.beforeSend = function(xhr) {
xhr.setRequestHeader('Content-Type': 'application/json');
};
_sync.apply(Backbone, arguments);
}
然后,如果你想定义Content-Type
每个模型,你可以这样做:
var _sync = Backbone.sync;
Backbone.sync = function(method, model, options) {
options.beforeSend = function(xhr) {
var contentType = model.contentType || null;
// var contentType = model.contentType || 'application/json'; // default to json
if(contentType) {
xhr.setRequestHeader('Content-Type': contentType);
}
};
_sync.apply(Backbone, arguments);
}
不过,如果你正在寻找为了让您的服务器在fetch()
调用中返回JSON,您真正需要的是Accept
标题。
反正有没有这样做的集合不全球? –
您可以重写[collection's'sync'](http://backbonejs.org/#Collection-sync)方法来始终强制使用'options.contentType ='application/json''。这个实现看起来和上面的'Backbone.ajax'几乎一样,只不过'sync'获得了三个参数,第三个参数是(可选的)'options'。 –
有趣,好。我发现它奇怪的Backbone可以让你设置URL和东西作为选项,但不要求选项。谢谢! –