我正在使用Ajax在JSP中開發代碼以驗證數據庫中的用戶(表示有一個輸入框,其中用戶提供電子郵件ID,然後代碼檢查用戶是否存在或不存在使用ajax),如果用戶不在數據庫中,則用戶不應該能夠提交表單。在下面的代碼中,Ajax正在工作。它根據從JSP用戶檢查文件(user_exist_function.jsp)返回來顯示true/false,但如果用戶不存在於數據庫上,則無法控制用戶停止提交。請幫忙。如果用戶不存在於數據庫中,請停止提交表單
JS
var MyApp = {};
function check() {
xmlHttp = GetXmlHttpObject()
var url = "user_exist_function.jsp";
value = document.getElementById('email1').value;
url = url + "?username=" + value;
xmlHttp.onreadystatechange = stateChanged
xmlHttp.open("GET", url, true)
xmlHttp.send(null)
}
function stateChanged() {
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
var showdata = xmlHttp.responseText;
document.getElementById("mydiv").innerHTML = showdata;
MyApp.status = showdata;
}
}
function GetXmlHttpObject() {
var xmlHttp = null;
try {
xmlHttp = new XMLHttpRequest();
} catch (e) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
function check_submit() {
var var1 = MyApp.status.valueOf().toLocaleString();
if (var1 == 'true') {
return false;
} else {
return true;
}
}
HTML
<form name="form" onsubmit="return check_submit();">
Email Id: <input type="text" name="email" id="email1" onkeyup="check();">
<font color="red">
<div id="mydiv"></div>
</font>
<input type="submit">
</form>
user_exist_function.jsp
<%@page import="java.sql.*" %>
<%@include file="Database_connectivity.jsp" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%
try{
String username = request.getParameter("username").toString();
PreparedStatement ps = conn.prepareStatement("SELECT * FROM V_USER_DATA WHERE " +
"EMAIL = ?");
ps.setString(1,username);
ResultSet res = ps.executeQuery();
if(res.next())
{
out.println("false");
}
else
{
out.println("true");
}
}catch (Exception e){
out.println(e);
}
%>
這裏的基本功能,簡化:https://jsfiddle.net/khrismuc/1xdb3yzu/工作正常,所以沒有你原來的代碼順便說一句;我無法發送表單。我建議:a)使用jQuery,b)正確的縮進,c)變量名稱和值,這些都是精確和直接的 –