我正在尝试检查数据库的用户名可用性。我不知道哪里出了问题,但它只是一直说“检查可用性”并且从不返回答案。下面是我的代码。
index.jsp
;
<html>
<head>
<title>Username Availability</title>
<style type="text/css">
.flable {
color: gray;
}
.status {
font-family: verdana;
font-size: 12px;
}
.uname {
color: blue;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js "></script>
<script type="text/javascript">
$(document).ready(function(){
$(".uname").change(function(){
var uname = $(this).val();
if(uname.length >= 3){
$(".status").html("<img src='images/loading.gif'><font color=gray> Checking availability...</font>");
$.ajax({
type: "POST",
url: "check",
data: "uname="+ uname,
success: function(msg){
$(".status").ajaxComplete(function(event, request, settings){
$(".status").html(msg);
});
}
});
}
else{
$(".status").html("<font color=red>Username should be <b>3</b> character long.</font>");
}
});
});
</script>
</head>
<body>
<div>
<label class="flable">User Name :</label> <input type="text" class="uname" /> <span class="status"></span>
</div>
</body>
</html>
CheckAvailibilty.java
:
import java.io.*;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class CheckAvailability extends HttpServlet {
private static final long serialVersionUID = -734503860925086969L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String connectionURL = "jdbc:mysql://localhost:3306/quora"; // students is my database name
Connection connection = null;
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(connectionURL, "root", "root");
String uname = request.getParameter("uname");
PreparedStatement ps = connection.prepareStatement("select username from users where username=?");
ps.setString(1,uname);
ResultSet rs = ps.executeQuery();
if (!rs.next()) {
out.println("<font color=green><b>"+uname+"</b> is avaliable");
}
else{
out.println("<font color=red><b>"+uname+"</b> is already in use</font>");
}
out.println();
} catch (Exception ex) {
out.println("Error ->" + ex.getMessage());
} finally {
out.close();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
}
web.xml
:
<servlet>
<servlet-name>check</servlet-name>
<servlet-class>com.amzi.servlets.CheckAvailability</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>check</servlet-name>
<url-pattern>/check</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
最佳答案
您不需要ajaxComplete
,当您收到 msg
时,只需将其提供给 html()
success: function(msg){
$(".status").html(msg);
}
关于java - Ajax 在用户名可用性方面无法与 JSP 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27090034/