要するに、これらの答えはすべて正しくないか、非効率的です。
- Ext.Ajax.on を使用できますが、リクエストの競合状態について心配する必要があります。簡単にトラップできるため、このソリューションは使用しないでください。Ext.Ajax.on は、同期以外の理由で発生する可能性があります。展示物を参照してください。
- batch.operations[0].response.responseText も使用できますが、「応答」オブジェクトが常に読み込まれるとは限らないため、これは応答を取得する信頼できる方法ではありません (要求によって異なり、例外がある場合は 404、 500、成功: false など)
展示物
// This picked up my autocomplete comboboxes load - not what I wanted!
Ext.Ajax.on({
requestcomplete: {
fn: callback,
scope: this,
single: true
},
requestexecption: {
fn: callback,
scope: this,
single: true
}
});
現在のソリューション
これはまだ私が探している応答を持っていませんが、まぁ。
store.sync({
failure: function (batch, eOpts) {
// 'this' is the Ext.data.proxy.Ajax object
// or whatever proxy you are using
var data = this.getReader().jsonData,
raw_data = this.getReader().rawData;
}
});
これがケースの完全な例外スタックをどのように処理するかはわかりませんが、発見したサーバー側の例外 (404、500 など) に基づいて投稿を修正します。