カスタムヘッダーを使用して、応答データに関する詳細情報を提供したいと思います。オブジェクトストア(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ヒッチを使用してオブジェクトストアの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);
もっと良い方法はありますか?