如何在 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);
}
}
当用户尝试创建他的帐户时,我正在尝试检查用户名是否可用。 当用户键入其用户名时,应该会立即检查用户名是否可用,并且会在用户名框正下方显示一条消息。
我试图通过调用 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.
首先你需要将它添加到项目构建路径中。然后打包您的操作配置以扩展 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);
}
}