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条)

报告相同问题?

悬赏问题

  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题