我想在尝试加载商店时收到个性化的错误消息,并且我的连接超时或者数据库无法访问...当我执行Ajax请求时非常容易,因为我将“响应”作为参数成功或失败......
Ext.Ajax.request({
url: 'ajax_demo/sample.json',
success: function(response, opts) {
var obj = Ext.decode(response.responseText);
console.dir(obj);
},
failure: function(response, opts) {
console.log('server-side failure with status code ' + response.status);
}
});
但是我在尝试加载商店时遇到了同样的问题,我已经定义了一个回调函数,但我只收到记录,操作和成功。
store.load({
callback : function(records, options, success) {
if (!success) {
// what can I do here to show personalized error sent from server
}
}
});
那么,处理这样的响应以向用户展示的正确方法是什么?
{"success": false, "msg": "SomeExceptionFromServer"}
祝你好运
答案 0 :(得分:3)
当成功为false时,操作永远不会获得响应属性,而是获取getError方法,但是您应该在proxyReader中定义messageProperty才能工作。
示例:
Ext.define("SC.store.SegurosCancelacionStore", {
extend: "Ext.data.Store",
model: "SC.model.PersonaSeguro",
proxy: {
timeout: 90000,
actionMethods: {
read : 'POST'
},
type: "ajax",
url: "../SegurosFinsolCancelacionServlet",
reader: {
type: "json",
root: "seguros",
messageProperty : 'msjError' //without this, it doesn't work
}
},
autoLoad: false
});
实施:
storeSegurosCancelacion.load({
params: {
'sucursal':sucursal,
'persona': persona
},
callback:function(records, operation, success){
msg.hide();
if(success == true){
if(records.length == 0){
Ext.Msg.alert('Resultado', 'No se ha encontrado información');
}
}
if(success == false){
try{
Ext.Msg.alert('Error', operation.getError()); // way more elegant than ussing rawData etc ...
}catch(e){
Ext.Msg.alert('Error', 'Error inesperado en el servidor.');
}
}
}
});
祝你好运
答案 1 :(得分:0)
store.load({
callback : function(records, operation, success) {
console.log(operation.getResponse().msg);//this does the trick
}
});
答案 2 :(得分:-1)
如果您要发送错误,为什么不传递空data
属性以及错误消息?所以没有要加载的记录,但是你得到了消息。
{
"success": false,
"msg": "SomeExceptionFromServer",
"data": {}
}
您可能需要将data
更改为您的数据属性名称。