我想使用自定义标头来提供有关响应数据的更多信息。是否可以从通过对象存储(dojo 1.7)连接到 jsonRest 对象的 dojo 数据网格的响应中获取标头?我看到当您发出 XHR 请求时这是可能的,但在这种情况下,它是由网格发出的。
API 为返回响应对象的响应错误提供了一个事件:
on(this.grid, 'FetchError', function (response, req) {
var header = response.xhr.getAllResponseHeaders();
});
使用它,我可以成功访问我的自定义响应标头。但是,似乎没有办法在请求成功时获取响应对象。我一直在使用未记录的私人事件 _onFetchComplete 和方面之后,但是,这不允许访问响应对象,只允许访问响应值
aspect.after(this.grid, '_onFetchComplete', function (response, request)
{
///unable to get headers, response is the returned values
}, true);
编辑:我设法得到了一些工作,但我怀疑它是过度设计的,有更好理解的人可以想出一个更简单的解决方案。我最终添加了方面,以允许我在返回到对象存储的其余存储中获取延迟对象。在这里,我向 defered 添加了一个新函数以返回标头。然后,我使用 dojo hitch 连接到对象存储的 onFetch(因为我需要当前范围内的结果)。对我来说似乎很乱
aspect.around(restStore, "query", function (original) {
return function (method, args) {
var def = original.call(this, method, args);
def.headers = deferred1.then(function () {
var hd = def.ioArgs.xhr.getResponseHeader("myHeader");
return hd;
});
return def;
};
});
aspect.after(objectStore, 'onFetch', lang.hitch(this, function (response) {
response.headers.then(lang.hitch(this, function (evt) {
var headerResult = evt;
}));
}), true);
有没有更好的办法?