struts2的action返回JSONArray,用ajax获取后遍历问题

qq359224897 2016-01-15 11:02:36
action里的方法(list里有id和name两个属性):
public String getCountry(){
String hql="select countryId,name from country";
List<Country> list =countryService.getResult(hql, null);
JSONArray jsonarray=new JSONArray();

JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
result =JSONArray.fromObject(list, jsonConfig);
//result = json.toString();
//result=JSONArray.fromObject(list);
return SUCCESS;
}
返回的数据是这样的:

我该怎么遍历它,返回的根本不是个数组,length属性都不对
...全文
497 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
hersing 2016-01-18
  • 打赏
  • 举报
回复
引用 15 楼 qq359224897 的回复:
[quote=引用 14 楼 hersing 的回复:]

$(document).ready(function(){
        var obj =[[1,"中国"],[2,"美国"],[3,"加拿大"]];
        $.each(obj,function(i,item){
            console.log(item[0]+"");
            console.log(item[1]+"");
        });
    });
亲测,可用
你这是直接定义成数组了吧。。我获取的好像是个字符串 分别是[ [ 1 这些[/quote] 你不是说你返回的就是数组么。。。估计是controller返回的数据格式错误,返回的数据用bejson校验一下
dusp0602 2016-01-18
  • 打赏
  • 举报
回复
xiexie
qq359224897 2016-01-18
  • 打赏
  • 举报
回复
引用 18 楼 hersing 的回复:
[quote=引用 15 楼 qq359224897 的回复:] [quote=引用 14 楼 hersing 的回复:]

$(document).ready(function(){
        var obj =[[1,"中国"],[2,"美国"],[3,"加拿大"]];
        $.each(obj,function(i,item){
            console.log(item[0]+"");
            console.log(item[1]+"");
        });
    });
亲测,可用
你这是直接定义成数组了吧。。我获取的好像是个字符串 分别是[ [ 1 这些[/quote] 你不是说你返回的就是数组么。。。估计是controller返回的数据格式错误,返回的数据用bejson校验一下[/quote] 不是··看着是数组形式,其实是字符串,var ob=JSON.parse(msg); 这样处理就行了。。
LL继续前进 2016-01-17
  • 打赏
  • 举报
回复
可以在sql语句中增加条件吗?where countryId=‘’,然后直接在下面用list遍历. JSONArray ja=new JSONArray(); for(int i=0;i<list.size();i++) { Country contry=list.get(i); JSONObject jsobj=new JSONObject(); jsobj.put("idx", user.getIdx()); jsobj.put("name",user.getName()); ja.add(jsobj); } 然后用PrintWriter丢给jsp页面。
qq359224897 2016-01-17
  • 打赏
  • 举报
回复
引用 14 楼 hersing 的回复:

$(document).ready(function(){
        var obj =[[1,"中国"],[2,"美国"],[3,"加拿大"]];
        $.each(obj,function(i,item){
            console.log(item[0]+"");
            console.log(item[1]+"");
        });
    });
亲测,可用
你这是直接定义成数组了吧。。我获取的好像是个字符串 分别是[ [ 1 这些
scmod 2016-01-15
  • 打赏
  • 举报
回复
是个数组吧... result[0][x]这样就能拿出来了啊...拿不出来么?
shixitong 2016-01-15
  • 打赏
  • 举报
回复
换个json工具类,比如fastjson或者GSON
qq359224897 2016-01-15
  • 打赏
  • 举报
回复
我想拿出id作为下拉框的value ,name显示在页面
hersing 2016-01-15
  • 打赏
  • 举报
回复

$(document).ready(function(){
        var obj =[[1,"中国"],[2,"美国"],[3,"加拿大"]];
        $.each(obj,function(i,item){
            console.log(item[0]+"");
            console.log(item[1]+"");
        });
    });
亲测,可用
qq359224897 2016-01-15
  • 打赏
  • 举报
回复
是不是Struts传值的过程有问题 获取到的变成字符串了吗 求个大神解答啊···纠结好久了
qq359224897 2016-01-15
  • 打赏
  • 举报
回复
引用 11 楼 hersing 的回复:
估计是取值有问题,把你前台取值的代码贴出来吧
$(document).ready(function(){ $.ajax({ type: "POST", url: "/test/OptionAction_getCountry.action", data: "json",//数据类型text xml json script jsonp success: function(msg){ //$.each(msg.items, function(i,item){}); for(var i=0;i<msg.length;i++){ $("#selectcountry").append('<option value="' + msg[i][0] + '">' +msg[i][1] + '</option>'); } } }) }); msg弹出看过,就是之前贴出来那个像数组的东西 应该没取错
hersing 2016-01-15
  • 打赏
  • 举报
回复
估计是取值有问题,把你前台取值的代码贴出来吧
qq359224897 2016-01-15
  • 打赏
  • 举报
回复
引用 9 楼 scmod 的回复:
[quote=引用 8 楼 qq359224897 的回复:] result是定义成全局变量了...肯定能拿到的 看着是数组··但是用a[i][j]的形式取不到数据
result[0][i],前面那个是0,或者用JSONObject这样传过来应该直接是一维数组[/quote] 不是二维数组吗··a[i][j],i肯定是遍历外围数组的啊 我看Struts2的demo都这样传的
scmod 2016-01-15
  • 打赏
  • 举报
回复
引用 8 楼 qq359224897 的回复:
result是定义成全局变量了...肯定能拿到的 看着是数组··但是用a[i][j]的形式取不到数据
result[0][i],前面那个是0,或者用JSONObject这样传过来应该直接是一维数组
qq359224897 2016-01-15
  • 打赏
  • 举报
回复
result是定义成全局变量了...肯定能拿到的 看着是数组··但是用a[i][j]的形式取不到数据
scmod 2016-01-15
  • 打赏
  • 举报
回复
引用 5 楼 hersing 的回复:
这数据结构就是数组,你的意思是说在前台没有length属性?你在action中查询出来后都没放入request中,前台怎么取的到
result他定义成全局变量了...能拿到的
引用 4 楼 qq359224897 的回复:
[quote=引用 3 楼 scmod 的回复:] 是个数组吧... result[0][x]这样就能拿出来了啊...拿不出来么?
拿不出来。。根本不是数组 都没有length属性[/quote] 你贴出来那块东西就是个数组啊...怎么会不是...???想不通..
  • 打赏
  • 举报
回复
用JSONObject,传过去之后,用$.each来遍历
hersing 2016-01-15
  • 打赏
  • 举报
回复
这数据结构就是数组,你的意思是说在前台没有length属性?你在action中查询出来后都没放入request中,前台怎么取的到
qq359224897 2016-01-15
  • 打赏
  • 举报
回复
引用 3 楼 scmod 的回复:
是个数组吧... result[0][x]这样就能拿出来了啊...拿不出来么?
拿不出来。。根本不是数组 都没有length属性

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧