struts2 ajax返回null

kamouswjw 2012-10-18 10:45:16
刚接触ajax和json,遇到点小问题,半天都没解决,希望大侠们支援哪。。。
感激万分~~
ajax调用action顺利执行了,result里有了内容,但页面弹框显示为null或者直接不显示

import org.json.JSONObject;
//result、username的setter、getter方法
public String showUser(){
List list = userDAO.findByUsername("king");
System.out.println("userame"+userame);

JSONObject obj=new JSONObject();
try {
obj.put("users", list);
result=obj.toString();
System.out.println("result: "+result);
//显示:result: {"users":[{"userpassword":"king","username":"king","userid":1}]}
} catch (JSONException e) {
e.printStackTrace();
}
return Action.NONE;
//return SUCCESS;//换成这句js不能弹窗
}

Action成功调用,username接收正常,
struts2.1.6:

<package name="userpk" extends="json-default" >
<action name="user" class="userAction">
<result type="json" name="result">
</result>
<!-- <result type="json">
<param name="root">result</param>
</result> -->
</action>
</package>


jsp页面js:

<script type="text/javascript">
$(document).ready(function(){
$("#btn").click(function(){
$.ajax({
type: "POST",
url: "user!showUser",
dateType: "json",
data: {"userame":"wang"},
success: function(data,status){
//var json = eval( "("+result+")" );
//alert("json"+json);
alert("result:"+data);
alert("status:"+status);
}
});
});
});
</script>
...全文
408 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kamouswjw 2012-11-02
  • 打赏
  • 举报
回复
感谢各位,解决结贴,
总结写在这里:
http://blog.csdn.net/kamouswjw/article/details/8117377
kamouswjw 2012-11-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

HttpServletResponse response = ServletActionContext.getResponse();
// response.setContentType("text/html"); //火狐浏览器必须加上这句
response.setCharacterEncoding("UTF-8");
……
[/Quote]
用struts可以不write,通过配result能传过去
www_Mr_wang 2012-10-25
  • 打赏
  • 举报
回复
我来看学习的
_还行_ 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

HttpServletResponse response = ServletActionContext.getResponse();
// response.setContentType("text/html"); //火狐浏览器必须加上这句
response.setCharacterEncoding("UTF-8");
……
[/Quote]

struts2不加这个是可以的。
KDJack 2012-10-22
  • 打赏
  • 举报
回复
HttpServletResponse response = ServletActionContext.getResponse();
// response.setContentType("text/html"); //火狐浏览器必须加上这句
response.setCharacterEncoding("UTF-8");
response.getWriter().write(result);

我认为应该要加这个吧~不然数据传不过去啊。
kamouswjw 2012-10-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

Java code

import org.json.JSONObject;
//result、username的setter、getter方法
public String showUser(){
List list = userDAO.findByUsername("king");
System.out.println("userame"+user……
[/Quote]
现在return "result";
<result type="json" name="result">
</result>
但获得的result有json内容却无法解析。。
用的是struts2.1.6
import net.sf.json.JSONObject;
kamouswjw 2012-10-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

浏览器直接访问user!showUser看输出什么内容。
[/Quote]
现在可以返回这个:
{"result":"{\"users\":[{\"username\":\"king\",\"userpassword\":\"king\",\"userid\":1},{\"username\":\"king\",\"userpassword\":\"123\",\"userid\":4},{\"username\":\"king\",\"userpassword\":\"32\",\"userid\":5}]}","usermame":null,"users":[]}

但js用如下都不能获得输出,为什么呢。。

success: function(result,status){
alert("status:"+result);//[object Object]
alert("result:"+result.users);//什么都没有
alert("users:"+result.users[0]);//undefined
alert("status:"+result.users[0].username);//直接不弹窗
}

chrome调试result是Object,其下的users确实Array[0]
fengyun817 2012-10-19
  • 打赏
  • 举报
回复

import org.json.JSONObject;
//result、username的setter、getter方法
public String showUser(){
List list = userDAO.findByUsername("king");
System.out.println("userame"+userame);

JSONObject obj=new JSONObject();
try {
obj.put("users", list);
result=obj.toString();
System.out.println("result: "+result);
//显示:result: {"users":[{"userpassword":"king","username":"king","userid":1}]}
} catch (JSONException e) {
e.printStackTrace();
}
//return Action.NONE;
return "result";//换成result,这里应与 struts.xml里的 <result type="json" name="result"> name 一致
}
Go 旅城通票 2012-10-19
  • 打赏
  • 举报
回复
浏览器直接访问user!showUser看输出什么内容。
kamouswjw 2012-10-19
  • 打赏
  • 举报
回复
action中加上如下代码可以在前台获得result,但struts2也必须这样吗?

HttpServletResponse response = ServletActionContext.getResponse();
// response.setContentType("text/html"); //火狐浏览器必须加上这句
response.setCharacterEncoding("UTF-8");
response.getWriter().write(result);
DemoChen 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

浏览器直接访问user!showUser看输出什么内容。
[/Quote]

+++

52,797

社区成员

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

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