我需要在backbone.js fetch方法的Ajax请求中读取响应头。如果我覆盖了fetch方法,有没有办法读取标题:
var PageCollection = Backbone.Collection.extend({
url: 'http://localhost/cms?_mn=Mod_Admin&_mf=getAllPages',
model: PageModel,
fetch: function (options) {
Backbone.Collection.prototype.fetch.call(this, options);
// The above line of code works and fetch the dataset
// BUT how i can read the response headers at this point
}
});
答案 0 :(得分:16)
使用“success”回调来获取xhr对象,这样你就有了获取所有响应头的能力:
collection.fetch({
success: function (collection, response, options) {
options.xhr.getAllResponseHeaders(); // To get all the headers
options.xhr.getResponseHeader('header_name'); // To get just one needed header
}
});
答案 1 :(得分:3)
Backbone fetch()
method会返回jqXHR
object。您可以在此对象上调用done()
以添加将在请求完成时调用的回调。然后在同一个getResponseHeader()
对象上使用jqXHR
方法获取您感兴趣的标头的值,或致电getAllResponseHeaders()
以获取所有标头。
因此,在覆盖fetch()
方法时,您可以执行以下操作:
var jqXHR = Backbone.Collection.prototype.fetch.call(this, options);
jqXHR.done(function() {
// Get all headers:
console.log('All headers:', jqXHR.getAllResponseHeaders());
// Or get a specific header:
console.log('Content-Length:', jqXHR.getResponseHeader('Content-Length'));
});
答案 2 :(得分:0)
看一下我的实现以及我如何使用parse function
var CustomPageCollection = Backbone.Collection.extend({
model: CustomPage,
url: '/pb/editor/pages',
parse: function(resp, xhr) {
this.paginationInfo = JSON.parse(xhr.getResponseHeader('X-Pagination-Info'));
return resp.items;
}
});
答案 3 :(得分:-1)
我发现了一个更好的方法: 该集合触发了一个"解析"功能,从服务器返回时 BakcboneJs - collection Parse
parse:function(a,b,c){
console.log("a",a);
console.log("b",b);
console.log("c",c);
},
我们的朋友在b:)