最近这段时间在学习用ajax刷新页面,分别学习了用jquery和ajaxanywhere去异步提交,接收处理数据.下面来记录一下:
一。
使用jquery进行提交数据的方式:
var params = {};
$.post(url,params,function(data)){
//data数据就是你从action返回的数据.
});
如果使用json其中的一种传值方式,就底下提到的extends = json-default方式就行传值,需要在post的这个提交方法的第三个参数function后面,加入一个第4个参数,也就是:
var params = {};
$.post(url,params,function(data)){
//data数据就是你从action返回的数据.
},'json');
这是在struts-default包下面的action的提交方式,当然,你也可以用$.ajax()或者$.get()的方式去提交,在这里就不说区别在哪里了.
ok,在JS当中获得数据,怎么在action当中返回需要的数据呢。
1.首先,如果你在struts.xml中是用继承extends = json-default的方式下的action,需要添加一个struts2-json-plugin-2.3.3.jar包,这个jar会自动给你把,例如从数据库里面查询到的list数据,转换成json格式. 在struts.xml中的写法是:
<package name="ajax" extends="json-default">
<action name="ajaxRequest" class="ajaxaction">
<result type="json">
<param name="root">list</param>
</result>
</action>
上面的 <param name="root">list</param>中的root,是必须的,当然也有其他形式的参数。list就是你action中的list。
这个list,只需要在action当中有get()方法就ok,action中方法的返回值的话,使用正常的success或者error等.
2.另外一种不继承 json-default的方式,使用json传值,要添加json-lib,ezmorph-1.0.6,commons-logging-1.1.1,commons.lang-2.5,commons-collections-3.2.1,commons-beanutils-1.8.0等包。
action当中把list使用jsonArray转换成字符串,
转换的方式是: JsonArray json = JsonArray.fromobject(list); String str = json.toString();
ok,这样的list就转换为了String类型的字符串。如果你不只需要传递list,你还可以在str后面按list里面存储的内容格式进行拼接字符串.再使用
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");//需要设置编码格式,不然如果传递的字符串中有中文,就会乱码
response.getWriter().write(str);
使用这种方式,就可以jiang装有list内容的str字符串返回给页面。
在页面的JS代码当中,获取的方式也有不同,因为传递的是字符串,所以需要在JS当中转换回来,
$.post(url,params,function(data)){
var json = JSON.parse(data);
//json数据就是你从action返回的数据.
//json[i].属性名可以取到list中的内容
});
当然,这个就不需要再post当中,使用第4个‘json’的参数。
ajaxanywhere没有写出来,等下次我再写.