function test(){var store2=new Ext.data.Store({proxy : new Ext.data.HttpProxy({url : 'job/job_do!getflag.action'}),reader : new Ext.data.JsonReader({root : 'flag',totalProperty : 'count2'},[{name:'teachdoc'}]),remoteSort : true});store2.load({params : {start : 0,limit : 12}});for(var i=0;i<store2.getCount();i++){ var record=store2.getAt[i];Ext.Msg.alert('xa',record.get('teachdoc'));}}后台action中的方法如下:public String getflag()throws Exception{//long id = RequestUtil.getIntParameter(req, "workId", 0);long teach_id = ((Teachers) req.getSession().getAttribute("teacher")).getTeachId();StringBuffer sb = new StringBuffer();// TbSubTeacherStatic model = new TbSubTeacherStatic();sb.append("{\"count2\":" + 1 + ",");sb.append("\"flag\":[");long s=this.jobDao.getflag(teach_id);sb.append("flag:\n[");sb.append("{"+"\"teachdoc\":\"" + String.valueOf(s)+ "\"}");sb.append("]}"); res.setCharacterEncoding("UTF-8");res.getWriter().print(sb.toString());return null;}
2 回答

江户川乱折腾
TA贡献1851条经验 获得超5个赞
HttpProxy的load方法实际上就是调用异步请求, 调用load方法后继续执行后续代码, 这个时候store还是空的, 所以没有alert出来. 将操作放到load成功的回调中:
store2.on('load', function(){
for(var i=0;i<store2.getCount();i++)
{ var record=store2.getAt[i];
Ext.Msg.alert('xa',record.get('teachdoc'));
}
});
如果还是不行, 你把json字符贴出来看下是否有问题

SMILET
TA贡献1796条经验 获得超4个赞
xml配置问题,struts2的action要配置为返回的json类型
<action name="confirm" class="com.zdsoft.confirm.action.ConFirmAction">
<result type="json"></result>
</action>
添加回答
举报
0/150
提交
取消