Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干提取完成后获取响应头_Javascript_Ajax_Backbone.js - Fatal编程技术网

Javascript 主干提取完成后获取响应头

Javascript 主干提取完成后获取响应头,javascript,ajax,backbone.js,Javascript,Ajax,Backbone.js,我需要读取backbone.js fetch方法发出的Ajax请求中的响应头。如果我重写fetch方法,有没有办法读取标题: var PageCollection = Backbone.Collection.extend({ url: 'http://localhost/cms?_mn=Mod_Admin&_mf=getAllPages', model: PageModel, fetch: function (options) { Backb

我需要读取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
    }
});
主干返回一个值。您可以在此对象上调用
done()
,以添加请求完成时将调用的回调。然后在同一
jqXHR
对象上使用
getResponseHeader()
方法来获取您感兴趣的头的值,或者调用
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'));
});
使用“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
    }
});
我找到了一个更好的方法: 当从服务器返回时,集合触发一个“parse”函数


我们的伙伴在b:)

看看我的实现和我如何使用


我在运行代码时出错。“未捕获的TypeError:对象[Object Object]没有方法'done'”。jqXHR没有完成任何方法。您使用的是哪个版本的jQuery?您是否也重写了
sync()
方法?请看这个小提琴的工作示例:oops!我切换到版本1.10.2,现在它可以正常工作了。谢谢你的帮助。
parse:function(a,b,c){      
    console.log("a",a);
    console.log("b",b);
    console.log("c",c);
},
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;
    }
});