我正在尝试编写表单验证。我必须检查数据库中的用户名是否唯一。但它不起作用。 register.jsp我的表单页面和deneme.jsp正在检查用户名是否唯一。这是页面
register.jsp
<html>
<body>
<form name="form" id="form">
<input type="text" name="username" id="username">
<input type="submit" name="register" value="Sign up">
</form>
<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script
src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.1.47/jquery.form-validator.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#form").validate({
rules : {
username : {
remote : {
url : "deneme.jsp",
async : false,
type : "post",
data : {
username : function() {
return $("#username").val()
}
}
}
}
},
messages : {
username : {
remote : "alredy exist"
}
}
});
});
</script>
</body>
</html>
,这里是deneme.jsp
<%@ page import="java.sql.*"%>
<%
Connection con;
Statement stm = null;
ResultSet rs;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager
.getConnection("jdbc:mysql://localhost/odevdb", "root",
"hawking1887/");
String username = request.getParameter("username");
stm = con.createStatement();
rs = stm.executeQuery("select * from users where username = '"
+ username + "'");
if (rs.next()) {
out.print("false");
} else {
out.print("true");
}
} catch (SQLException e) {
out.print(e);
} catch (ClassNotFoundException e) {
out.print(e);
}
%>
答案 0 :(得分:1)
您使用的是错误的插件或错误的代码格式。
您的脚本包含 jQuery Form Validator plugin (版本2.1.47)。
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.1.47/jquery.form-validator.min.js"></script>
但是,.validate()
来电,rules
选项,remote
方法(和您的代码, jquery-validate)中的语法全部用于 jQuery Validate plugin (当前版本为1.13.0 )。
$("#form").validate({
rules : {
username : {
remote : {
....
最简单的解决方法是为您已编写的代码添加正确的插件...
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.13.0/jquery.validate.min.js"></script>
否则,您需要修复代码以符合您包含的插件。 ( jQuery Form Validator plugin中似乎没有remote
方法。)