读书人

struts2 ajax回到null

发布时间: 2013-01-05 15:20:39 作者: rapoo

struts2 ajax返回null
刚接触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>

[解决办法]
浏览器直接访问user!showUser看输出什么内容。
[解决办法]

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 一致
}


[解决办法]
引用:
浏览器直接访问user!showUser看输出什么内容。


+++
[解决办法]
HttpServletResponse response = ServletActionContext.getResponse();
// response.setContentType("text/html"); //火狐浏览器必须加上这句
response.setCharacterEncoding("UTF-8");
response.getWriter().write(result);

我认为应该要加这个吧~不然数据传不过去啊。
[解决办法]
引用:
HttpServletResponse response = ServletActionContext.getResponse();
// response.setContentType("text/html"); //火狐浏览器必须加上这句
response.setCharacterEncoding("UTF-8");
……


struts2不加这个是可以的。

读书人网 >Ajax

热点推荐