store定义,根是root
[code]
var ds_report = new Ext.data.Store({
url : 'GetReportList.action',
reader : new Ext.data.JsonReader({
totalProperty : 100,
root : 'root'
}, [{
name : 'name'
}, {
name : 'configXml'
}, {
name : 'fsny'
}, {
name : 'areaCode'
}, {
name : 'tjlCode'
}, {
name : 'state'
}, {
name : 'excel'
}])
});
[/code]
store加载,msg是当success是false时的错误信息
[code]
ds_report.load({
params : {
fsny :fsny.getValue(),
areaCode : area.getValue(),
tjlCode : jigoulei.getValue()
},
callback: function(r, options, success){
if(success){
Ext.Msg.alert('操作','成功!');
}else if (r[0] && r[0].msg) {
Ext.Msg.alert('',r[0].msg);
}
}
});
[/code]
当返回值是{success:false,root:[{msg:'你没有权限查看该地区报表!'}]}时,竟然显示“操作成功”的会话框,并且在grid中多了一行空记录。(使用root返回错误信息的原因是callback函数中没办法取到{success:false,msg:'没有权限'}中的msg的值)
为什么json的success是false,而callback中的却是true?是不是callback的success的值不是取自返回的json数据,请解答。
[b]问题补充:[/b]
谢谢atian25 辛苦作答。
设置successProperty:'success'也没有用,感觉callback里边的success应该是表示store是否加载成功,所以json返回succes没有用。
不过问题也解决了:
1.r[0].msg是取不到的,应该用r[0].get('msg')
2.因为json里success不起作用,所以json里边不用返回success了,用if(r[0].get('msg'))来判读是否成功
callback里边应这么写:
[code]
callback : function(r, options, success) {
if(r[0]){
msg = r[0].get('msg');
if(msg){
ds_report.removeAll();
Ext.Msg.alert('提示',msg);
}
}
}
[/code]