黑马程序员技术交流社区

标题: Ajax+struts:异步向后台请求json数据 [打印本页]

作者: 大山哥哥    时间: 2017-3-30 19:33
标题: Ajax+struts:异步向后台请求json数据
本帖最后由 大山哥哥 于 2017-3-30 19:59 编辑

本次案例演示的是,通过Ajax异步请求后台数据,配置struts,使用action直接向该ajax请求响应对象json数据的过程。
第一步,前台页面异步请求
[AppleScript] 纯文本查看 复制代码
var url = "${pageContext.request.contextPath}/userAction_calMethod.action";
                                            $.post(url,{'param':value},function(data){
                                                    if(data.resultCode == "200"){
                                                            $.messager.alert('提示信息','操作成功!','info');
                                                    }else{
                                                            $.messager.alert('提示信息','操作失败!','warning');
                                                    }
                                            });

第二步,后台struts配置。
[XML] 纯文本查看 复制代码

<!--action所在的package继承json-default或者其父继承json-default -->
<package name="basicstruts2" extends="json-default">
<action name="userAction_*" class="userAction" method="{1}">
<!--type为json-->
                        <result name="resultStatus" type="json">
                                <!--
                                指定将被Struts2序列化的属性,也就是UserAction方法中的resultMsg。
                                注意:
                                如果不写root param则返回的并不是我们想要的数据
                                -->
                                <param name="root">resultMsg</param>
                        </result>
                </action>

<package >


第三步,准备要向前台返回的对象
[Java] 纯文本查看 复制代码

//创建状态类,用于向页面返回结果
public class ResultMessage {
        private String resultCode;
        private String message;
        private Object[] messages;
        
        public ResultMessage() {
        }
        
        public ResultMessage(String resultCode, String message) {
                this.resultCode = resultCode;
                this.message = message;
        }
        
        public String getResultCode() {
                return resultCode;
        }
        public void setResultCode(String resultCode) {
                this.resultCode = resultCode;
        }
        public String getMessage() {
                return message;
        }
        public void setMessage(String message) {
                this.message = message;
        }
        public Object[] getMessages() {
                return messages;
        }
        public void setMessages(Object[] messages) {
                this.messages = messages;
        }
}


第四步,在action中定义
ResultMessage变量并提供get方法
[Java] 纯文本查看 复制代码
protected ResultMessage resultMsg = null;
        public ResultMessage getResultMsg() {
                return resultMsg;
        }

第五步,直接使用
ResultMessage变量
[Java] 纯文本查看 复制代码
        public String calMethod() {
                try{
                        //处理业务逻辑
                        /**
                         *返回的对象在此处进行赋值
                         */
                        resultMsg = new ResultMessage("200", "处理成功");
                }catch (Exception e) {
                        resultMsg = new ResultMessage("301", "处理失败.");
                }
                return "resultStatus";
        }

处理完毕,前台的回调函数可以直接使用data来接收json数据。




作者: linzpcom    时间: 2017-3-31 17:43
谢谢楼主分享,学习了

作者: 黑了只马    时间: 2017-4-1 22:31
66666666666
作者: 千千阙歌    时间: 2017-4-1 23:12
看看看了
作者: 17631331017    时间: 2017-4-2 10:24
还没学,基本看不懂。需要学的还很多,

作者: 若梦蓝山悠长    时间: 2017-4-2 21:27
厉害厉害!
作者: 黑了只马    时间: 2017-4-2 22:53
感谢分享啊
作者: 黑了只马    时间: 2017-4-2 22:54
6666666666
作者: 千千阙歌    时间: 2017-4-2 23:45
看看看看
作者: MMM521    时间: 2017-4-3 23:16
这啥子哦,完全看不懂  我刚学 我已经眼花了
作者: 千千阙歌    时间: 2017-4-4 23:22
看看看看




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2