标签:ajax struts
之前项目中每次都是直接使用ajax进行异步处理,现在觉得有必要梳理下思路
1、页面js请求
$.ajax({ url:"addRy.action", data:{"xm":"王石"}, dataType:"json", type:"post", async: false, success:function(data){ alert(data); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("error"); } });
url:请求的处理地址
data:传入参数
dataType:URL返回值是以JSON的格式传过来的,然后在页面上解析时就要采取JSON格式来展示
type:提交方式post/get
async:默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程和ajax块后面的脚本(另一个线程)
success:ajax请求成功处理的回调函数,回调函数中的data参数为json对象
error:ajax请求失败处理的回调函数
ajax的回调函数还有complete
2、Struts的xml配置文件
<package name="ajax" extends="json-default">
<action name="addRy" class="com.dsideal.rs.RyAction">
<result type="json"></result>
</action>
</package>
3、action类
public class RyAction extends ActionSupport
{
private List<String[]> list;
public List<String[]> getList() {
return list;
}
@Override
public String execute() {
list= new ArrayList<String[]>();
list.add("a");
list.add("b");
list.add("c");
return SUCCESS;
}
}
根据上面的代码,ajax的success中的data获取到的则是action中所有写明get、set变量所组成的的json串。
还有另一种配置,如果xml中,这么写
<result type="json">
<param name="root">list</param>
</result>
那么JSON类型结果的参数中加入“root”参数可以设定输出JSON结果的根,以上述情况为例,如果没有“root”参数,输出将为“{ "list": [ ["a", "b","c"]] }”,加了之后变就会成“[ ["a", "b","c"]] ”。
1、测试时需要注意,如果action定义的变量为json,并且不配置root,是否会进行error函数
2、对于页面中写的如果不是dataType为json时,是否还需要将配置文件放在package为json的包中,与项目中内容进行区分
3、action中的get和set是否全部必须
本文出自 “默默” 博客,请务必保留此出处http://bcptdtptp.blog.51cto.com/1475446/1545409
标签:ajax struts
原文地址:http://bcptdtptp.blog.51cto.com/1475446/1545409