struts2与ajax结合
2013-10-18 11:20
351 查看
1.首先要搞清楚$.post和$ajax的区别:
$.post:这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
$.ajax:当传递给服务器的数据复杂类型数据的时候,$.post方法就无效了。
json格式:
简单json格式
{
key:value(基本类型)
}
复杂json格式
{
key:value是一个对象
}
2.$.ajax是ajax请求的企业级处理
可以传递简单的json对象
可以用$.ajax传递复杂格式的对象
* 把struts2与json插件提供的拦截器导入到项目中来,这个拦截器是在struts2-json-plugin-2.3.15.1.jar包中的struts-plugin.xml中定义的
<interceptors>
<interceptor-stack name="ajaxStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="json"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="ajaxStack"></default-interceptor-ref>
* js端必须调用$.ajax提交请求,json格式必须是最标准的字符串的形式,可以利用$.toJSON插件来进行转化
* $.ajax本身注意的问题:
contentType: "application/json"这项配置说是传递的是json,必须要写
3.jar包:除了struts2的基本jar包外,再加struts2-json-plugin-2.3.15.1.jar和struts2-junit-plugin-2.3.15.1.jar
测试负责数据的js
Action(json数据的key要和action里的属性对应才action能取值,action传递给前台的,用data.属性名取值)
struts.xml
$.post:这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
$.ajax:当传递给服务器的数据复杂类型数据的时候,$.post方法就无效了。
json格式:
简单json格式
{
key:value(基本类型)
}
复杂json格式
{
key:value是一个对象
}
2.$.ajax是ajax请求的企业级处理
可以传递简单的json对象
可以用$.ajax传递复杂格式的对象
* 把struts2与json插件提供的拦截器导入到项目中来,这个拦截器是在struts2-json-plugin-2.3.15.1.jar包中的struts-plugin.xml中定义的
<interceptors>
<interceptor-stack name="ajaxStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="json"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="ajaxStack"></default-interceptor-ref>
* js端必须调用$.ajax提交请求,json格式必须是最标准的字符串的形式,可以利用$.toJSON插件来进行转化
* $.ajax本身注意的问题:
contentType: "application/json"这项配置说是传递的是json,必须要写
3.jar包:除了struts2的基本jar包外,再加struts2-json-plugin-2.3.15.1.jar和struts2-junit-plugin-2.3.15.1.jar
测试负责数据的js
$().ready(function(){ $("input[type='button']").unbind("click"); $("input[type='button']").bind("click",function(){ /** * 对于复杂数据,例如数组,$.post传递数据是不行的 */ // $.post("testAjax2","{'bb':[1,2,3]}",function(data){ // alert(data); // });//复杂类型的json数据 var param = { id:'1', username:'xxc', arrayInt:[2,3,6,8], arrayList:[20,21,23], teacher:{ tname:'aaa', tid:22, strs:['HELLO','WORLD'] }, teacherList:[ { tname:'张三', tid:'1', strs:['a','b'] },{ tname:'李四', tid:'2', strs:['c','d'] } ] }; $.ajax({ url:"../testAjax2.action", type:"POST", data:"{'bb':[5,6,7,8,9,10]}",//这里必须key加'' 中括号外边再加"",否则struts2不认,所以每次这样拼接很麻烦 success:function(){ alert("aaaaaa"); }, contentType:'application/json', error:function(){ alert("bbbbbb"); } }); //param = $.toJSON(param); // $.ajax({ // url:"../testMoreJson.action", // type:"POST", // data:param, // success:function(){ // alert("aaaaaa"); // }, // contentType:'application/json', // error:function(){//这个函数是根据服务器的status来进行调用的,struts2出错后不会自动设置status错误状态码 // alert("bbbbbb"); // } // }); }); });
Action(json数据的key要和action里的属性对应才action能取值,action传递给前台的,用data.属性名取值)
public class TestMoreJson extends ActionSupport implements Serializable { private String id; private String username; private Integer[] arrayInt; private List<Integer> arrayList; private List<Teacher> teacherList; public String execute(){ try { int i = 1/0; } catch (Exception e) { ServletActionContext.getResponse().setStatus(500);//手动设置服务器返回的状态码 e.printStackTrace(); } return SUCCESS; } //省略get和set方法 }
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 使用简单主题 --> <constant name="struts.ui.theme" value="simple"/> <!-- 自动加载 --> <constant name="struts.devMode" value="true" /> <package name="testAjax" extends="json-default"> <interceptors> <interceptor-stack name="ajaxStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="json"></interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="ajaxStack"/> <action name="testMoreJson" class="com.xxc.action2.TestMoreJson"> <result type="json"></result> </action> </package> </struts>
相关文章推荐
- AjaxFileUpload组件结合Struts2异步图片上传
- struts2与ajax结合
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONException
- struts2 + ajax + json的结合使用--实例讲解
- struts2结合ajax实现无刷新登录
- struts2结合jquery的Ajax应用
- Struts2结合jquery使用Ajax传递Json数据
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONException
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONException
- Struts2 结合Ajax传递多个JSON对象
- struts2 + ajax + json的结合使用,实例讲解
- s:datetimepicker标签如何才能使用(struts2如何结合ajax主题)
- Struts2与ajax结合开发的缺点之AOP优化架构
- ssh2与ajax结合之返回json数据异常:org.apache.struts2.json.JSONException
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONException
- Struts2与ajax结合的缺点
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONException
- AjaxFileUpload结合Struts2实现多文件上传(动态添加文件上传框)
- Struts2中ajax结合action实现表单时时验证
- Struts2结合 Ajax 和 json开发项目