前端有如下函数接受json,可没接受到,请高手看看,这样写对吗?

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;
}

慕标琳琳
浏览 106回答 2
2回答

江户川乱折腾

HttpProxy的load方法实际上就是调用异步请求, 调用load方法后继续执行后续代码, 这个时候store还是空的, 所以没有alert出来. 将操作放到load成功的回调中:&nbsp;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

xml配置问题,struts2的action要配置为返回的json类型<action name="confirm" class="com.zdsoft.confirm.action.ConFirmAction"><result type="json"></result></action>
打开App,查看更多内容
随时随地看视频慕课网APP