struts,ajax之间的json传递
2014-08-15 15:23
190 查看
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,这几天被json和struts弄得晕头转向的新手,到现在终于有点感悟,终于把测试的demo写了几种方法,终于有点清楚……
也感谢网上各位前辈的贴子代码,所以更要总结一番,给像我一样的后来者一点方便。。
对新手看了一定会有收获的。。有问题大家请指正~
json作为一种被广泛应用的数据交换格式,简单点说就是一串被序列化的字符串。
struts的action和前台的js之间的json传递,主要也就是这个字符串的封装和解析。。
struts把对象(包括List等)序列化为一个字符串,再传给js,js通过var json = eval("("+xxx+")");的方式解析json字符串为js对象,并使用其属性是较常用的一直方式。实现方式有:
一、action中通过根据源对象user新建JSONObject对象obj,再把obj转为string后write到前台:
[java] view
plaincopy
public String showUser(){
User user = (User) userDAO.findByUsername("king").get(0);
JSONObject obj=new JSONObject(user);
try {
result=array.toString();<span style="white-space:pre"> </span>//得到序列化对象后的string<span style="white-space:pre"> </span>可以无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;
}
前台:
[javascript] view
plaincopy
$(document).ready(function(){
$("#btn").click(function(){
$.ajax({
type: "POST",
url: "user!showUser",
dateType: "json",
success: function(data,status){
alert(status);
<span style="white-space:pre"> </span><span style="white-space:pre"> </span>alert("data"+data);
<span style="white-space:pre"> </span>var json = eval("("+data+")");<span style="white-space:pre"> </span>//此处data即为action里的result,是字符串,要转为js对象<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>alert("json.user.username"+json.user.username);
}//end of success
});//end of ajax
});//end of click
});//end of ready
二、不用write,直接return json,要配置struts.xml:
[java] view
plaincopy
public String showUser(){
List users = userDAO.findByUsername("king");
User user = (User) userDAO.findByUsername("king").get(0);
System.out.println("username"+username);
try {
[java] view
plaincopy
<span style="white-space:pre"> JSONObject obj=new JSONObject();
<span style="white-space:pre"> </span>obj.put("user", user);
<span style="white-space:pre"> </span>result=obj.toString();</span>
[java] view
plaincopy
<span style="white-space:pre"> } catch (Exception e) {
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>return "result";
<span style="white-space:pre"> </span>} </span>//引号勿漏
struts.xml:注意json-default和type=“json"
[html] view
plaincopy
<package name="userpk" extends="json-default" >
<action name="user" class="userAction">
<span style="white-space:pre"> </span> <result type="json" name="result">
[html] view
plaincopy
<span style="white-space:pre"> </result></span>
[html] view
plaincopy
<span style="white-space:pre"> </action>
<span style="white-space:pre"> </span></package> </span>
前台js:
[html] view
plaincopy
$(document).ready(function(){
$("#btn").click(function(){
$.ajax({
type: "POST",
url: "user!showUser",
dateType: "json",
data: {"username":"wang"},
success: function(data,status){
alert(status);
[html] view
plaincopy
<span style="white-space:pre"> alert("data"+data);<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>var json = eval("("+data.result+")");<span style="white-space:pre"> //result在data中<span style="white-space:pre"> </span> </span>
<span style="white-space:pre"> </span>alert("data.username"+json.user.username);</span>
[html] view
plaincopy
<span style="white-space:pre"> }//end of success
<span style="white-space:pre"> </span>});//end of ajax
<span style="white-space:pre"> </span>});//end of click
<span style="white-space:pre"> </span>});//end of ready</span>
三、JSONArray处理方法如上,同样是传输json字符串result,传输方法多种,产生字符串代码方法如下:
[java] view
plaincopy
JSONArray array = new JSONArray();
array.addAll(users);//users为list
result=array.toString();
前台js处理稍有不同,success内方法代码如下:
[javascript] view
plaincopy
var json = eval("("+data.result+")");
$.each(json,function(index,item){
$("#result").append(index+":"+item.username+" "+item.userpassword+"<br/>");
});
四、List的处理可以用map方式,如下:
就直接上别人源码了:
[java] view
plaincopy
public String testByAction() {
// dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
dataMap.clear();
User user = new User();
user.setId("123");
user.setName("JSONActionStruts2");
user.setPassword("123");
user.setSay("Hello world !");
dataMap.put("user", user);
// 放入一个是否操作成功的标识
dataMap.put("success", true);
// 返回结果
return SUCCESS;
}
struts.xml:
[html] view
plaincopy
<package name="json" extends="json-default" namespace="/test">
<action name="testByAction"
class="cn.ysh.studio.struts2.json.demo.action.UserAction" method="testByAction">
<result type="json">
<!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->
<param name="root">dataMap</param>
</result>
</action>
</package>
});
原文链接:http://blog.csdn.net/kamouswjw/article/details/8117377
alert("array:"+json[0].username);
$.each(json,function(index,item){
$("#result").append(index+":"+item.username+" "+item.userpassword+"<br/>");
作为一个刚接触json,这几天被json和struts弄得晕头转向的新手,到现在终于有点感悟,终于把测试的demo写了几种方法,终于有点清楚……
也感谢网上各位前辈的贴子代码,所以更要总结一番,给像我一样的后来者一点方便。。
对新手看了一定会有收获的。。有问题大家请指正~
json作为一种被广泛应用的数据交换格式,简单点说就是一串被序列化的字符串。
struts的action和前台的js之间的json传递,主要也就是这个字符串的封装和解析。。
struts把对象(包括List等)序列化为一个字符串,再传给js,js通过var json = eval("("+xxx+")");的方式解析json字符串为js对象,并使用其属性是较常用的一直方式。实现方式有:
一、action中通过根据源对象user新建JSONObject对象obj,再把obj转为string后write到前台:
[java] view
plaincopy
public String showUser(){
User user = (User) userDAO.findByUsername("king").get(0);
JSONObject obj=new JSONObject(user);
try {
result=array.toString();<span style="white-space:pre"> </span>//得到序列化对象后的string<span style="white-space:pre"> </span>可以无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;
}
前台:
[javascript] view
plaincopy
$(document).ready(function(){
$("#btn").click(function(){
$.ajax({
type: "POST",
url: "user!showUser",
dateType: "json",
success: function(data,status){
alert(status);
<span style="white-space:pre"> </span><span style="white-space:pre"> </span>alert("data"+data);
<span style="white-space:pre"> </span>var json = eval("("+data+")");<span style="white-space:pre"> </span>//此处data即为action里的result,是字符串,要转为js对象<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>alert("json.user.username"+json.user.username);
}//end of success
});//end of ajax
});//end of click
});//end of ready
二、不用write,直接return json,要配置struts.xml:
[java] view
plaincopy
public String showUser(){
List users = userDAO.findByUsername("king");
User user = (User) userDAO.findByUsername("king").get(0);
System.out.println("username"+username);
try {
[java] view
plaincopy
<span style="white-space:pre"> JSONObject obj=new JSONObject();
<span style="white-space:pre"> </span>obj.put("user", user);
<span style="white-space:pre"> </span>result=obj.toString();</span>
[java] view
plaincopy
<span style="white-space:pre"> } catch (Exception e) {
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>return "result";
<span style="white-space:pre"> </span>} </span>//引号勿漏
struts.xml:注意json-default和type=“json"
[html] view
plaincopy
<package name="userpk" extends="json-default" >
<action name="user" class="userAction">
<span style="white-space:pre"> </span> <result type="json" name="result">
[html] view
plaincopy
<span style="white-space:pre"> </result></span>
[html] view
plaincopy
<span style="white-space:pre"> </action>
<span style="white-space:pre"> </span></package> </span>
前台js:
[html] view
plaincopy
$(document).ready(function(){
$("#btn").click(function(){
$.ajax({
type: "POST",
url: "user!showUser",
dateType: "json",
data: {"username":"wang"},
success: function(data,status){
alert(status);
[html] view
plaincopy
<span style="white-space:pre"> alert("data"+data);<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>var json = eval("("+data.result+")");<span style="white-space:pre"> //result在data中<span style="white-space:pre"> </span> </span>
<span style="white-space:pre"> </span>alert("data.username"+json.user.username);</span>
[html] view
plaincopy
<span style="white-space:pre"> }//end of success
<span style="white-space:pre"> </span>});//end of ajax
<span style="white-space:pre"> </span>});//end of click
<span style="white-space:pre"> </span>});//end of ready</span>
三、JSONArray处理方法如上,同样是传输json字符串result,传输方法多种,产生字符串代码方法如下:
[java] view
plaincopy
JSONArray array = new JSONArray();
array.addAll(users);//users为list
result=array.toString();
前台js处理稍有不同,success内方法代码如下:
[javascript] view
plaincopy
var json = eval("("+data.result+")");
$.each(json,function(index,item){
$("#result").append(index+":"+item.username+" "+item.userpassword+"<br/>");
});
四、List的处理可以用map方式,如下:
就直接上别人源码了:
[java] view
plaincopy
public String testByAction() {
// dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
dataMap.clear();
User user = new User();
user.setId("123");
user.setName("JSONActionStruts2");
user.setPassword("123");
user.setSay("Hello world !");
dataMap.put("user", user);
// 放入一个是否操作成功的标识
dataMap.put("success", true);
// 返回结果
return SUCCESS;
}
struts.xml:
[html] view
plaincopy
<package name="json" extends="json-default" namespace="/test">
<action name="testByAction"
class="cn.ysh.studio.struts2.json.demo.action.UserAction" method="testByAction">
<result type="json">
<!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->
<param name="root">dataMap</param>
</result>
</action>
</package>
});
原文链接:http://blog.csdn.net/kamouswjw/article/details/8117377
相关文章推荐
- struts,ajax之间的json传递
- jsp中利用jquery+ajax传递json格式参数与前后台之间
- json在servlet与ajax之间的传递实例
- java web开发:ajax技术(三)——JSON在服务器和浏览器之间的传递
- jquery 的ajax请求传递json数据给struts的action
- jsp中利用jquery+ajax在前后台之间传递json格式参数
- jsp中利用jquery+ajax在前后台之间传递json格式参数
- HTML文件、PHP文件、JSON文件之间通过AJAX编程简单传递数据
- 最最基层的ajax交互代码jquery+java之间的json跨域传递以及java的json代码返回
- jsp中利用jquery+ajax传递json格式参数与前后台之间
- 页面之间参数传递3.1--Struts标签,Ajax
- ajax json,xml,文本数据传递实例
- Struts2+Spring输出JSON供AJAX调用注意的小问题
- 在Struts 2中使用JSON Ajax
- Ajax------------ prototype+struts(json)
- 在Struts 2中使用JSon ajax支持
- asp.net中Ajax技术使用Json格式传递数据
- 在Struts 2中使用JSON Ajax支持
- ExtJS Tree利用json(直接传List TreeNode,不需要转化为JSONArray或通过JSP传)在Struts 2实现Ajax动态加载树结点
- $.ajax json数据传递方法