如何在 Struts 2 中使用 Ajax 检查用户名可用性

How to check username availability using Ajax in Struts 2

当用户尝试创建他的帐户时,我正在尝试检查用户名是否可用。 当用户键入其用户名时,应该会立即检查用户名是否可用,并且会在用户名框正下方显示一条消息。

我试图通过调用 Ajax 来实现它,但基本上无法理解 return 的内容以及它是如何工作的,实际上我是 Struts 2 的新手,我可以检查用户名但没有根据 return.

我的Ajax通话

<script>
            $(document).ready(function () {
                $("input").blur(function () {
                    var input = $(this).val();
                    alert(input);
                    $.ajax({
                        url:'checkUsername',
                        method:"POST",
                        data:{username:input},
                        success:function(data)
                        {
                            if(data!='0'){
                                $('#availability').html('<span>not available</span>')
                                $('#update').attr("disabled",true);
                            }
                            else{
                                $('#availability').html('<span>available</span>')
                                $('#update').attr("disabled",false);
                            }
                        }
                    })
                });
            });
        </script>

检查用户名操作

public String checkUsername() {
        try {
            setCtr(admin.checkUsername(username));
            if (ctr > 0) {
                System.out.println(ctr);
                setNoData(false);
            } else {
                setNoData(true);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "CHECKUSER";
    }

dao中查看用户名的方法

public int checkUsername(String username) throws Exception {
        ResultSet rs = null;
        Connection con = null;
        try {
            con = ConnectionManager.getConnection();
            System.out.println(username);
            String sql = "SELECT * FROM userinfo WHERE username =?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, username);
            rs = ps.executeQuery();
            if (rs.next()) {
                return 1;
            }

        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            if (con != null) {
                con.close();
            }
        }
        return 0;
    }
}

dao 中的此方法能够检查用户名,但是 return 我正在尝试检查的 ajax 数据中的内容是否应该打印不可用。如何return以及如何查询?
struts.xml

 <action name="checkUsername" class="com.redress.actions.AdminAction" method = "checkUsername"> </action>

谁能指正一下,如何实现?

只是 return 一个 json 结果。您应该在操作配置中定义它。我已经解释过了how you can return a json result without struts2-json-plugin。现在您将使用它通过 jQuery ajax.

return 一个 JSON 对象到成功回调函数

首先你需要将它添加到项目构建路径中。然后打包您的操作配置以扩展 json-default 包。它将 JSON 结果类型添加到 Struts 配置。

使您想要访问的 属性 noData(无论什么)具有 getter 和 setter.

将 JSON 类型的结果添加到操作配置中。

 <action name="checkUsername" class="com.redress.actions.AdminAction" method = "checkUsername">
    <result type="json">
        <param name="root">action</param>
    </result>
</action>

操作方法应该return ActionSupport.SUCCESS 结果代码。

在成功回调函数中你应该得到JSON你可以检查的对象

success:function(data){
  if(!data.noData){                        
    $('#availability').html('<span>not available</span>');        
    $('#update').attr("disabled",true);
   }
   else{   
     $('#availability').html('<span>available</span>');
     $('#update').attr("disabled",false);
  }
}