kowenzh 2009-06-30 10:45
浏览 316
已采纳

store callback的问题

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]

  • 写回答

3条回答

  • iteye_10013 2009-06-30 11:57
    关注

    刚测试了下了,
    你是2.2版本的吧,
    返回的json应该是:
    {
    metaData: {
    success:false,
    },
    data:[
    {name:'xx'}
    ]
    }

    sucess在metaData里面.

    3.0的话,就可以在外面.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求一个临界热流密度查询表程序
  • ¥15 关于浏览器调试工具断点失效的问题
  • ¥15 pubsub.js无法订阅到消息
  • ¥15 非正弦供电多相感应电机毕业设计
  • ¥15 请用asp语言将得到一组数组转换为图片
  • ¥15 stm32f103c8t6采集HLK-LD2450毫米波雷达传感器数据并打印显示距离和角度
  • ¥15 不重复生成字母+数字交易号
  • ¥15 AD封装导入后层混乱了
  • ¥15 如何将excel中的数据导入ansys中
  • ¥15 MATLAB中图像问题