Struts2 + ajax + json 相关的有关问题
阅读
action类代码
- Java code
public class CategoryAction extends ActionSupport { private List<Category> subcates; //。。。。省略get/set方法 public String getsubcates(){ subcates=categoryManger.getSubCates(pid); return SUCCESS; [color=#FF0000]//注意此处[/color] } }
action的配置:
- XML code
<package name="json" extends="json-default" > <action name="getsubcatesaction" class="categoryAction" method="getsubcates"> <result name="success" type="json"> <param name="includeProperties"> subcates\[\d+\]\.id,subcates\[\d+\]\.name </param> </result> </action> </package>
jsp页面中 js代码:
- JScript code
function addsubcotes(pid){ alert(pid); ajaxUtil("getsubcatesaction.action?pid="+pid,false,true,null,true, function(data){ alert(data); var jsonObject = eval('(' + data + ')'); var select = document.getElementById("subcate"); select.options.length=0;//清空select alert(jsonObject.subcates); for(var i = 0;i<jsonObject.subcates.length;i++){ var category = list.subcates[i]; slect.add(new Option(category.name,category.id)); } } ); }
问题:正确的情况下应该是在js中获得List<Category>,结果返回的居然是 “success"字符串,也就是action 的result的name。
不知道怎么个情况,平常这样写都没问题,今天怎么就错了呢?请大神解救。
------解决方案--------------------
<param name="includeProperties">
subcates\[\d+\]\.id,subcates\[\d+\]\.name
</param>
<param name="root">这是我一般的用法
------解决方案--------------------
pid 你传到后台了吗?
------解决方案--------------------
debug 断点调试一下 如果后台没问题 是不是前端 接收对象有问题 firebug 调试 获取前端对象是什么
------解决方案--------------------
控制台-〉所有-〉单击连接-〉响应
------解决方案--------------------
我觉得你在前台返回的success,应该是Getsubcatesaction尖中的方法getsubcates返回的字符串(return SUCCESS),你通过ajax调用getsubcates方法,返回到前台的应该是经过json处理的字符串吧,比如你返回的是list,应该把list转为json字符串,再return出来,由前台ajax捕获,再做eval解析,再输出来。
阅读
上一篇:java怎样将utf 8编码转成汉字啊解决办法 下一篇:返回列表