利用ajax进行异步请求验证

阅读: 评论:0

利用ajax进行异步请求验证

利用ajax进行异步请求验证

 场景描述:

登录程序大家都不陌生,但如果要注册,则必须保证用户的ID不能重复,这种检测用户ID的操作可以通过Ajax完成。

 

表结构:

 

<html>
<head><title>异步验证</title></head>
<body>
<script language="JavaScript">var xmlHttp;var flag;function createXMLHttp(){if (window.XMLHttpRequest){						// 创建XMLHttpRequest核心对象xmlHttp = new XMLHttpRequest()					// 使用FireFox内核}else {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");	// 使用IE内核的浏览器}}function checkUserid(userid){		// 显示信息createXMLHttp();	//// 设置请求,通过地址重写方式将userid传递到JSP中xmlHttp.open("POST","CheckServlet?userid="+userid);// 设置完请求后调用处理回调函数adystatechange = checkUseridCallback;xmlHttp.send(null);	// 发送请求,不设置参数//ElementById("msg").innerHTML = "正在验证……";//alert("*******");}function checkUseridCallback(){	// 回调函数if (adyState == 4){			// 数据返回完毕if (xmlHttp.status == 200){			// HTTP操作正常alert("*****8");var text = sponseText;// 接收返回内容if (text == "true"){flag = false;				// 无法提交表单ElementById("msg").innerHTML = "用户名ID重复,无法使用";}else {flag = true;				// 可以提交表单ElementById("msg").innerHTML = "恭喜!此用户ID可以注册";}}}}function checkForm(){	// 对表单判断能否进行提交操作return flag;}
</script><form action="xxx.jsp" method="post" οnsubmit="return checkForm()">用户ID:<input type="text" name="userid" οnblur="checkUserid(this.value)"><span id="msg"></span><br>姓  名:<input type="text" name="name"><br>密  码:<input type="password" name="password"><br><input type="submit" value="注册"><input type="reset" value="重置"></form>
</body>
<html>
Servlet.java(当然  也可以配置成action,这个需要自己配置,不一定是要servlet的)

package zz.ajax;
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CheckServlet extends HttpServlet{public static final String DBDRIVER = "sql.Driver";public static final String DBURL = "jdbc:mysql://localhost:3306/zz";public static final String DBUSER = "root";public static final String DBPASSWORD = "mysql";public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException,java.io.IOException{this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException,java.io.IOException{request.setCharacterEncoding("GBK");response.setContentType("text/html");		// 设置回应的MIMEConnection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;PrintWriter out = Writer();		// 接收验证的useridString userid = Parameter("userid");try{Class.forName(DBDRIVER);	// 加载驱动conn = Connection(DBURL, DBUSER, DBPASSWORD);	// 连接数据库String sql = "SELECT COUNT(userid) FROM user WHERE userid=?";pstmt = conn.prepareStatement(sql);pstmt.setString(1, userid);rs = uteQuery();System.out.printf("*********");if (rs.next()){if (rs.getInt(1) > 0){		// 判断ID是否已存在out.print("true");		// 已存在}else {out.print("false");}}out.close();}catch (Exception e){e.printStackTrace();}finally {try{conn.close();}catch (Exception e){e.printStackTrace();}}}} 



 

[html]  view plain copy
  1. 网页错误详细信息  
  2.   
  3. 消息: 'userid' 未定义  
  4. 行: 18  
  5. 字符: 3  
  6. 代码: 0  
  7. URI: localhost/demo/14_Ajax/regist.htm  
  8.   
  9.   
  10. function checkUserid(userid){      // 显示信息  
  11. 没有声明参数  


不能进入

if (xmlHttp.status == 200){                 // HTTP操作正常

alert("*****3");

说明HTTP操作不正常,那怎么返回HTTP状态码?

调试过程:

[html]  view plain copy
  1. if (adyState == 4){           // 数据返回完毕  
  2.             //alert("*****2");  
  3.             alert(xmlHttp);  
  4.             adyState);  
  5.             alert(xmlHttp.status);  
  6.             if (xmlHttp.status == 200){         // HTTP操作正常  
  7.                 alert("*****3");  


 

数据返回完毕,但服务器找不到指定的资源(),文档不存在!而且Servlet调试根本未进入,这是为什么???


MLDN论坛李祺老师解答:

说明你的AJAX提交路径对应的资源不存在。
你的Servlet必须将编译后的class文件放到项目的WEB-INF/classes目录下,并放到对应的包中,如果没有加入,则会找不到资源

我又出这样的问题:

Servlet.java文件不必放在WEB-INF/classes文件夹下

!!!!!!!但你的<servlet-class>

                    zz.ajax.CheckServlet

             </servlet-class>是放哪?

 

其它编译错误:

java.lang.ClassNotFoundException: DBDRIVER

Class.forName("DBDRIVER");   // 加载驱动 不要“”

显示效果:

 


/*  转载自  */

本文发布于:2024-02-03 02:03:16,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170689699747911.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:ajax
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23