chsboy
2011-05-13 11:05
浏览 299

ext的store.load的callback如何获得response的值?

store.load({ params : { start : 0, limit : inputPageSize } , callback : function(r, option, success) { //if (success == false) { // Ext.MessageBox.alert('提示', '会话超时,请注销登录4,如注销登录失败重启tomcat'); //}

         alert("call back start");
         alert(r[0]);
         alert ("msg is:"+r[0].get('msg');
         if(r[0]){  
           msg = r[0].get('msg');  
           if(msg){   
            Ext.Msg.alert('提示',msg);  
        }  
         }          }   });})

如何获得 r里的值那,比如返回的json值是:{"totalProperty":1,"root":[{"NODEDC":"HL","ISMONITOR":"0","MEMO":"test"}]}

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • cbcgkx 2011-05-13 13:55
    已采纳

    前台接收的是后台传来的json串 在catch里面一样 也返回一段json串 而这个json串里面装的是错误异常信息
    try{
    out.println({root:[{name:value,,,,,},{name:value,,,,,}]});
    }catch(Exception ex){
    out.println({root:[{msg:'sfsdfdsf'}]}
    }
    把异常反映该前台 是没有问题的

    已采纳该答案
    打赏 评论
  • cbcgkx 2011-05-13 11:21

    r返回的是加载的record

    callback : Function
    在Record加载之后被调用的函数。 回调函数在load事件被触发后调用, 并且将会被传递如下参数:

    r : Ext.data.Record[] 所加载的Record数组。
    options : 调用load方法时的配置对象。
    success : 布尔值,加载是否成功标识位。

    打赏 评论
  • cbcgkx 2011-05-13 11:30

    后台返回的json值是:{"totalProperty":1,"root":[{"NODEDC":"HL","ISMONITOR":"0","MEMO":"test"}]}

    那么r代表的就是root属性内里面的对象数组

    通过r参数可以取到的值 只能是{"NODEDC":"HL","ISMONITOR":"0","MEMO":"test"}这里面的属性值

    打赏 评论
  • cbcgkx 2011-05-13 12:48

    楼主你好,你只能取到返回记录里面的信息

    额外的信息应该是取不到的

    {success:false,msg:'A communication error has been detected. Communication protocol being used: Reply.fill(). Communication API being used: InputStream.read(). Location where the error was detected: insufficient data. Communication function detecting the error: *. Protocol specific error codes(s) TCP/IP SOCKETS DB2ConnectionCorrelator: GA194D45.BD3B.110513024207',check:false}

    这段信息 你可以把他同样放到record的最后一条记录内

    当success==false的时候 从record的最后一条记录中去取错误信息

    这样处理的话 就需要你在后台对json重新组装一下

    把错误信息添加到最后一条记录 默认记录为空 出现异常的时候 为最后一条记录赋值

    不知道能否明白我的意思

    正常情况

    [{name:value,name:value}。。。。。,{msg:}]

    出现异常的时候

    可以把记录放到最后一条 或者干脆不要前面的记录 只是返回错误信息
    [{msg:''}]

    取记录的时候 使用r[0].msg

    打赏 评论
  • caoruitan 2011-05-13 13:01

    没有哪个参数可以获取到你的msg值,这种情况你只能修改你后台的json格式,如果出错则是查询不到结果,查询不到结果那你的结果集,也就是root中的内容就没有实际意义,你封装成这样
    {"totalProperty":1,"root":[{"msg":"错误提示"}]}
    然后你用r[0].msg获取你的错误提示信息

    打赏 评论
  • cbcgkx 2011-05-13 15:53

    前台有异常吗
    你在火狐控制台下 看一下响应的json串 是否和你后台传来的一致 如果一致 说明是前台处理有问题 多试一试 :D

    打赏 评论
  • suziwen 2011-05-13 17:04

    楼主不要监听 store里的事件,
    要监听store里定义的proxy事件

    比如这个Ext.data.DataProxy里面的load事件(o值就是返回的response了),

    [code="java"]load : ( DataProxy this, Object o, Object options )
    Fires before the load method's callback is called.
    Listeners will be called with the following arguments:
    this : DataProxy
    The proxy for the request
    o : Object
    The request transaction object
    options : Object
    The callback's options property as passed to the request function
    DataProxy

    loadexception : ( misc misc )
    This event is deprecated. The signature of the loadexception event varies depending on the proxy, use the catch-all exception event instead. This event will fire in addition to the exception event.
    Listeners will be called with the following arguments:
    misc : misc
    See exception.[/code]

    打赏 评论
  • cunyan 2011-05-13 17:53

    [size=xx-large]{"totalProperty":1,"root":[{"NODEDC":"HL","ISMONITOR":"0","MEMO":"test"}]}

    获取方法:
    r.nodedc
    r.ismonitor[/size] :roll: :roll:

    打赏 评论

相关推荐 更多相似问题