首页 > 代码库 > Struts2与ajax【未完成】

Struts2与ajax【未完成】

之前项目中每次都是直接使用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

Struts2与ajax【未完成】