日期:2014-05-16 浏览次数:20451 次
var json = eval("("+data.result+")");//result在data中
alert("array:"+json[0].username);
$.each(json,function(index,item){
$("#result").append(index+":"+item.username+" "+item.userpassword+"<br/>");
});也感谢网上各位前辈的贴子代码,所以更要总结一番,给像我一样的后来者一点方便。。
对新手看了一定会有收获的。。有问题大家请指正~
json作为一种被广泛应用的数据交换格式,简单点说就是一串被序列化的字符串。
struts的action和前台的js之间的json传递,主要也就是这个字符串的封装和解析。。
struts把对象(包括List等)序列化为一个字符串,再传给js,js通过var json = eval("("+xxx+")");的方式解析json字符串为js对象,并使用其属性是较常用的一直方式。实现方式有:
一、action中通过根据源对象user新建JSONObject对象obj,再把obj转为string后write到前台:
public String showUser(){
User user = (User) userDAO.findByUsername("king").get(0);
JSONObject obj=new JSONObject(user);
try {
result=array.toString(); //得到序列化对象后的string 可以无setter、getter方法
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html"); // 火狐浏览器必须加上这句
response.setCharacterEncoding("UTF-8");
response.getWriter().write(result); //直接write到前台,struts.xml的result里什么都不用配
} catch (Exception e) {
e.printStackTrace();
}
return Action.NONE;
}前台:
$(document).ready(function(){
$("#btn").click(function(){
$.ajax({
type: "POST",
url: "user!showUser",
dateType: "json",
success: function(data,status){
alert(status);
alert("data"+data);
var json = eval("("+data+")"); //此处data即为action里的result,是字符串,要转为js对象
alert("json.user.username"+json.user.username);
}//end of success
});//end of ajax
});//end of click
});//end of ready
public String showUser(){
List users = userDAO.findByUsername("king");
User user = (User) userDAO.findByUsername("king").get(0);
System.out.println("username"+username);
try { JSONObject obj=new JSONObject();
obj.put("user", user);
result=obj.toString(); } catch (Exception e) {
return "result";
} //引号勿漏<package name="userpk" extends="json-default" >
<action name="user" class="userAction">
<result type="json" name="result"> </result> </action>
</package> 前台js:
$(document).ready(function(){
$("#btn").click(function(){
$.ajax({
type: "POST",
url: "user