您的位置:首页 > Web前端 > JQuery

Java Web(8)struts2 result 返回json,jQuery 解析显示

2015-11-25 18:37 706 查看
1. 今天在项目中使用jQuery.ajax的时候,想通过服务端返回Json,然后再使用ajax的回调函数来显示处理结果。

2. 在阅读了struts2关于json-plugin的文档后,便对项目按文档说明进行了部署

首先在pom.xml添加plugin类库依赖

<dependencies>
...
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>STRUTS_VERSION</version>
</dependency>
...
</dependencies>

接着是在struts.xml中配置一个package

//这里一定要继承json-default 否则会报错
<package name="json" extends="json-default" namespace="/json">
<action name="jsonTest"
class="JsonAction" method="json">
<result type="json" name="success">
<!-- 不要添加param
<param name="enableSMD">true</param>
一配置这个,就返回的是一堆版本什么鬼的json数据,不是action里的json数据
-->
</result>
</action>
</package>

然后编写一个对应的Acion类

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.json.annotations.JSON;
public class JsonAction extends ActionSupport {
private String name;
private String sex;
private String phone;
public String json(){
name = "asdf";
sex = "man";
phone = "1234567";
return "success";
}
@JSON(name="name")//指定返回的json的对应的name键名
public String getName(){
return this.name;
}
public String getSex(){
return this.sex;
}
pulibc String getPhone(){
return this.phone;
}
//setter ...
}

再然后就是在网页中通过$.get或$.post()来异步请求json咯,下面只是写了javascript的代码

$(document).on("click","#jsonBtn",function(){
//struts2 的标签,生成action的访问链接
var actionUrl = '<s:url action="jsonTest" namespace="/json"></s:url>';
var data = {};//一数要请求的数据
$.post(
actionUrl,
data,
//其中的data已经是jQuery对象表示的json
function(data){
$('p').text(data.name+" "+data.sex+" "+data.phone);
},
"json" //指定向服务器请求返回的数据类型
);
})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: