ajax 怎么获取action中返回的SUCCESS和ERROR。。

没怎么学js,我是想验证用户名是否存在的,网上的能够跑出来,但是思路理不顺,,
代码

jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2017/7/8
  Time: 11:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<script src="js/jquery.min.js"></script>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>ajax异步测试</h1>
<input type="text" name="userinfo.u_name" >   <s:property value="#request.saveMsg"/>
<div id="message"></div>
<script>
    $("input").blur(function () {
        $.ajax({
            type:"POST",
            url:"${pageContext.request.contextPath}/user/ifuser",
            data:"userinfo.u_name=" + $("input").val(),
            success: function(message){
                /**
                }
            }
        )
    })
</script>
</body>
</html>

action

@Action(value = "/ifuser", results = {
        @Result(name = "success",location = "/test.jsp"),
        @Result(name = "error",location = "/test.jsp")
})
public String regYz(){
    System.out.println("sss"+userinfo.getU_name());
    HttpServletRequest request = ServletActionContext.getRequest();
    boolean flag =  userService.regYZ(userinfo);
    if (flag){
        request.setAttribute("saveMsg", "已经存在");
        System.out.println("已经存在");
        return ERROR;
    }else {
        System.out.println("不存在,可以注册");
        return SUCCESS;
    }
}

我是想获取到SUCCESS 或者error来判断是否存在,不知道ajax怎么获取到。谢谢大家
阅读 6.4k
5 个回答

<script>

// input失去焦点时,触发以下代码(ajax可以实现无刷新提交,具体请求可通过F12打开控制台,进入network控制面板查看)
$("input").blur(function () {
    $.ajax({            // 下述为ajax异步提交代码
        type:"POST",    // 以POST方式提交到后台
        url:"${pageContext.request.contextPath}/user/ifuser", // 提交的地址为"${pageContext.request.contextPath}/user/ifuser",
        data:"userinfo.u_name=" + $("input").val(),  // POST提交携带的参数u_name的value,为inpu中获取的值。后台可通过获取POST参数的方式,得到u_name的值
        success: function(message){    // 如果处理成功,则执行下列函数体中的代码
            /**    // 处理成功后,进行其它操作
            }
        }
    )
})

</script>

要向ajax获取success ,后台必须给ajax返回一个json 对象

{"status":"success","msg":"成功"}

$("input").blur(function () {
        $.ajax({
            type:"POST",
            url:"${pageContext.request.contextPath}/user/ifuser",
            data:"userinfo.u_name=" + $("input").val(),
            success: function(message){
                //todo
                if(message.status=='success')
                {
                       //成功
                }
                }
            }
        )
    })

假设你的程序能跑通的话

  1. 打开你的chrome浏览器(或其他带控制台的)

  2. 使用F12键打开浏览器的web控制台

  3. 切换到network选项卡,并选中xhr

  4. 浏览你项目中要测试的地址,在控制台中会截取你访问的异步请求,在header中可以看到请求信息,response会看到反馈信息,其中你写的ajax函数里面success后面的message就是你请求中的返回信息,即response里的内容. 程序中的理论逻辑可以去百度Struts2或servlet中的数据绑定传递之类的, ajax用法可以参考这里

控制台截图

试着在请求时加个dataType。

$.ajax({
            type:"POST",
            url:"",
            data:"",
            dataType:"",
            success: function(message){
                /**/
                }
            }
        )

图片描述

jQuery ajax - ajax() 方法

非常感谢你的回答,解决了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题