Equal_
2015-04-23 13:35
采纳率: 21.1%
浏览 4.9k

ajax提交数据后 ,怎么取值??

 <script type="text/javascript">
   function validate(){
    //var username = $('#usernmae').val();
    var username = document.getElementById("username").value;
    alert(username);
    $.ajax({
        url:"register",
        type:"post",
        date:{username:username},
        success:function(data){
            $('#message').html(data);
        }

    });


    ajax跟struts2结合,后台java代码怎么取值,如果是Jason的时候怎么取值??我在后台结果视图中实用的stream流的形式返回的result,想弄明白,ajax跟struts2之间的数据流转到底是怎么样的形式?????如果是Jason的话,应该怎么取值????有没有深入研究过的人??
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • threenewbee 2015-04-23 13:44

    post回去就相当于表单,直接用参数就可以了。

    打赏 评论
  • 另一花生 2015-04-24 00:56

    你这个问题边上好多乱七八糟的条,看的我眼晕,异步传输,直接相当于表单,就过去了,在后台直接用参数接受;你不是set/get方法了么,所以可以取得
    这个参数值,之后直接完成功能,传回前台,这里有个问题,你在ajax中写的datatype是什么类型就要传回什么类型,有点废话了- - 。最后浏览器自己会
    识别出这个串子的,你可以用火狐看到,希望对你有用!!!加油

    打赏 评论
  • 静待佳期 2015-04-24 01:07

    如果你在控制器中也就是你url对应的类中,写了setXX(),getXX()方法,那么可以直接this.XX即可.
    如果没写set,get方法,那么可以 ServletActionContext.getRequest().getParameter("XX");

    打赏 评论
  • 毕小宝 2015-04-24 07:02

    首先你的页面代码有误data参数拼写错误。示例代码:

     <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                + request.getServerName() + ":" + request.getServerPort()
                + path + "/";
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
        <title>Welcome to BoadVedio</title>
        <script type='text/javascript' src="<%=basePath%>resource/js/jquery-1.8.3.js"></script>
        <script type="text/javascript">
                var basePath = '<%=basePath%>';
                function validate(){
                    var username = document.getElementById("username").value;
                    $.ajax({
                        url:basePath+"validate.action",
                        type:"post",
                        data:{username:username},
                        success:function(data){
                            var message = data.result.message;
                            $('#message').html(message);
                        }
                    });
                }
        </script>
      </head>
      <body>
        <input type="text" name="username" id="username"/>
        <input type="button" value="提交" onclick="validate();"/>
        <div id="message"></div>
      </body>
    </html>
    

    其次,你定义Action类包含username属性和一个map类型存放json数据。

     public class ValidateAction extends ActionSupport {
        private String username;
        public Map<String,Object> result = new HashMap<String,Object>();
    
        public Map<String, Object> getResult() {
            return result;
        }
    
        public String execute() throws Exception {
            if ("zhangsan".equals(username)) {
                result.put("message", "success结果");
            }
    
            else {
                System.out.println("error结果");
                result.put("message", "error结果");
            }
            return Action.SUCCESS;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    }
    

    第三,配置struts的action的result类型为json且继承json-default。

     <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
        <package name="default" extends="json-default">
            <action name="login" class="LoginAction">
                <result name="success">/success.jsp</result>
                <result name="error">/error.jsp</result>
            </action>
    
            <action name="validate" class="ValidateAction">
                <result type="json" />
            </action>
        </package>
    </struts>   
    

    按照以上步骤编写测试代码,需要导入struts2-json-plugin-2.2.3.jar。祝好!

    打赏 评论
  • 毕小宝 2015-04-24 07:07

    后台Action返回的result类型为json的话,在JSP页面可以直接访问Action的属性result了。
    1 Action接收请求数据,只要提供对应属性的getter和setter方法。
    2 Action返回结果配置成json时,继承json-default,配置result类型为json。

    打赏 评论

相关推荐 更多相似问题