异常处理 – 使用ajax代理处理Sencha touch Store中的404异常
发布时间:2020-12-16 01:37:23 所属栏目:百科 来源:网络整理
导读:我正在尝试通过处理可能发生的各种异常来使我的代码更加健壮.一个可能是Json Web请求的404异常.当Json请求获得404异常时,看起来不会调用store.load的回调方法. 代码: Ext.regModel('Activiteit',{ fields: [ { name: 'id',type: 'int' },{ name: 'ServerId'
我正在尝试通过处理可能发生的各种异常来使我的代码更加健壮.一个可能是Json Web请求的404异常.当Json请求获得404异常时,看起来不会调用store.load的回调方法.
代码: Ext.regModel('Activiteit',{ fields: [ { name: 'id',type: 'int' },{ name: 'ServerId',type: 'int',mapping: 'Id' },{ name: 'Title',type: 'string' },{ name: 'Description',],}); Ext.regApplication({ name: 'App',launch: function () { console.log('launch'); var ajaxActiviteitStore = new Ext.data.Store({ model: "Activiteit",storeId: 'ajaxActiviteitStore',proxy: { type: 'ajax',url: '/senchatest/Activiteit/Gett/',reader: { type: 'json',root: 'activiteiten' } } }); ajaxActiviteitStore.load(function (records,operation,success) { //the operation object contains all of the details of the load operation console.log(success); }); } }); 这导致在sencha-touch-debug.js的第7212行上出现“未捕获的TypeError:无法读取未定义的属性’长度”异常.我正在使用版本1.1.0的sencha touch. 堆栈跟踪: Uncaught TypeError: Cannot read property 'length' of undefined Ext.data.Store.Ext.extend.loadRecords sencha-touch-debug.js:7212 Ext.data.Store.Ext.extend.onProxyLoad sencha-touch-debug.js:7024 (anonymous function) sencha-touch-debug.js:8742 Ext.data.Connection.Ext.extend.onComplete sencha-touch-debug.js:17566 Ext.data.Connection.Ext.extend.onStateChange sencha-touch-debug.js:17513 (anonymous function) sencha-touch-debug.js:3421 我在这做错了什么? 我找到了一个解决方法,通过向侦听“异常”事件的代理添加一个侦听器,但我更喜欢调用存储负载的回调函数.我做错了什么,或者这是默认行为? 谢谢, 桑德
如果服务器返回错误(404,500,…),我会遇到与AjaxProxy(ST 1.1.0)相同的异常(Uncaught TypeError:无法读取未定义的属性’length’).
实际上,我认为问题出在Ext.data.AjaxProxy.createRequestCallback方法中. var ajaxActiviteitStore = new Ext.data.Store({ model: "Activiteit",proxy: { type: 'ajax',url: 'some nonexistent url',reader: { type: 'json',root: 'activiteiten' },listeners: { exception: function(store,response,op) { console.log('Exception !'); // hack to avoid js exception : // TypeError: 'undefined' is not an object (evaluating 'records.length') // on line sencha-touch-debug-1-1-0.js:7212 op.records = []; } } } }); 希望这可以提供帮助,我希望在sencha-touch论坛上打开一个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |