我想使用自定義標頭來提供有關響應數據的更多信息。是否有可能通過對象存儲(dojo 1.7)將dojo datagrid的響應中的頭部連接到jsonRest對象?我在看到XHR請求時發現這是possible,但在這種情況下,它是由網格生成的。Dojo datagrid jsonrest響應標頭
的API provides爲返回的響應對象的響應錯誤事件:
on(this.grid, 'FetchError', function (response, req) {
var header = response.xhr.getAllResponseHeaders();
});
使用這個我能夠成功訪問我的自定義響應頭。但是,當請求成功時,似乎沒有辦法獲取響應對象。我一直使用undocumented私人活動_onFetchComplete縱橫後,但是,這並沒有允許訪問響應對象,只是響應值
aspect.after(this.grid, '_onFetchComplete', function (response, request)
{
///unable to get headers, response is the returned values
}, true);
編輯: 我設法得到的東西的工作,但我懷疑它是非常過分的設計和一個更好的理解的人可以拿出一個更簡單的解決方案。我最後添加了方面,讓我能夠在返回到對象存儲的其餘存儲中獲取延遲對象。在這裏,我添加了一個新的函數來返回頭文件。然後我使用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);
有沒有更好的方法?
這將在標準json商店:var results = this.inherited(arguments); (function(){ var headers = results.ioArgs.xhr.getResponseHeader('my-header'); }); –