ajax使用jquery提交或者ajaxanywhere2种提交方式的取得数据的方法

来源:互联网 发布:方正兰亭黑简体 mac 编辑:程序博客网 时间:2024/06/13 06:40

最近这段时间在学习用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没有写出来,等下次我再写.


0 0
原创粉丝点击