gpt4 book ai didi

exception - 使用ajax代理处理Sencha touch Store中的404异常

转载 作者:行者123 更新时间:2023-12-01 16:30:08 24 4
gpt4 key购买 nike

我试图通过处理可能发生的各种异常来使我的代码更加健壮。其中之一可能是 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', type: 'string' },
],
});

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 行出现“未捕获的类型错误:无法读取未定义的属性‘长度’”异常。我正在使用 sencha touch 1.1.0 版本。

堆栈跟踪:

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) 相同的异常(未捕获类型错误:无法读取未定义的属性“长度”)。

实际上,我认为问题出在 Ext.data.AjaxProxy.createRequestCallback 方法中。我用这样的脏代码解决了我的问题:

var ajaxActiviteitStore = new Ext.data.Store({
model: "Activiteit",
storeId: 'ajaxActiviteitStore',
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 论坛上提出一个问题。

关于exception - 使用ajax代理处理Sencha touch Store中的404异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7119775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com