[英]Access to http status code from Ext.data.Store
我有一個http API(令人震驚的新技術)對設置不同響應狀態的不同錯誤做出反應。
問題是 - 當使用Ext.data.Store和一些XMLHttpRequest-inside代理時,處理這種狀態的最佳方法是什么? 據我所知,“load”事件不會直接傳遞狀態,也不會傳遞“異常”,最后一個事件實際上甚至不會在收到4 **狀態時觸發。
所以,正如我從代碼中看到的那樣,實例是從Ext.data.store隱藏的,所以問題也可以說是“什么是最好的extjs實踐來處理低級xhr對象”。
Ext.data.Store上沒有異常事件。 而是Ext.data.proxy.Server及其定義異常事件的子類(如Ext.data.proxy.Ajax)。 監聽器接收包含http狀態的響應對象。
根據您的設置,您可以在商店的代理上注冊一個監聽器,或者 - 如果您的商店使用模型 - 在模型的代理上注冊。
這個測試設置適用於Chrome 14和FF 6:
var store = Ext.create('Ext.data.Store', {
fields: [ 'field1', 'field2'],
proxy: {
type: 'ajax',
url: 'api/data.json',
reader: {
type: 'json',
root: 'data'
},
listeners: {
exception: function(proxy, exception, operation) {
console.log(response.status);
}
}
},
});
store.load();
異常事件確實提供了一個response
對象,該對象具有一個status
屬性,其中包含您要查看的HTML狀態代碼。
如果您的異常確實沒有被4 **錯誤觸發(根據我的經驗,這可能會觸發),您可以嘗試注冊ajax監聽器:
Ext.Ajax.on('requestexception', exceptionHandlerMethod);
和
function exceptionHandlerMethod(connection, response, requestOptions, listenerOptions) {
if(response.status == 401) {
alert('401 error');
}
}
使用extjs 5.1
商店/代理可以通過監聽'beginprocessresponse'或'endprocessresponse'事件來訪問每個響應http代碼和標頭。
proxy: {
// snip
listeners: {
beginprocessresponse: 'onResponse'
}
onResponse: function(store, response, operation) {
console.log('prior to reader');
console.log(response.getAllResponseHeaders());
}
}
我很好奇EventDomain如何在Ext.Ajax,Proxy,Reader和Store之間發揮作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.