利用ajax异步校验验证码(转)
利用ajax异步校验验证码
示例结果如图所示
具体步骤如下:
step1:
jsp页面及js脚本
- <%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
- <html>
- <head>
- <title>form</title>
- <script type="text/javascript" src="<%=request.getContextPath()%>/js/my.js"></script>
- <script type="text/javascript">
- //检查用户名是否存在
- function check_username(){
- //step1,获得ajax对象
- var xhr = getXhr();
- var username = $V('userrname');
- //step2,使用ajax对象发请求(get/post)
- xhr.open('get','checkUsername?username='+username,true);
- //step3,编写服务器端的处理程序
- //step4,编写事件处理函数
- xhr.onreadystatechange = function(){
- if(xhr.readyState==4){
- if(xhr.status==200){
- //服务器访问正常
- var txt = xhr.responseText;
- $('check_msg').innerHTML = txt;
- }else{
- $('check_msg').innerHTML = '验证出错';
- }
- }
- };
- $('check_msg').innerHTML = '正在验证';
- xhr.send(null);
- }
- //检查验证码是否正确
- function check_number(){
- var xhr = getXhr();
- var code = $V('code');
- xhr.open('get','checkNumber?code='+code,true);
- xhr.onreadystatechange = function(){
- if(xhr.readyState==4){
- if(xhr.status==200){
- //服务器访问正常
- var txt = xhr.responseText;
- $('code_msg').innerHTML = txt;
- }else{
- $('code_msg').innerHTML = '验证出错';
- }
- }
- };
- $('code_msg').innerHTML = '正在验证';
- xhr.send(null);
- }
- </script>
- </head>
- <body>
- <form action="" method="post">
- <fieldset>
- <legend>登陆</legend>
- <!-- <a href="javascript:;" onclick="alert(getXhr())">测试获取ajax对象</a> -->
- 用户名:<input id="userrname" name="username" onblur="check_username();">
- <span id="check_msg" style="color:red;"></span><br/>
- 密码:<input name="pwd" type="password"><br/>
- 验证码:<img id="image" src="checkcode" onclick="this.src='checkcode?'+(new Date()).getTime()">
- <a href="javascript:;" onclick="$('image').src='checkcode?'+(new Date()).getTime()">换一张</a>
- <input id="code" name="code" onblur="check_number();"/><span id="code_msg" style="color:red;"></span><br/>
- <input type="submit" value="提交"><br/>
- </fieldset>
- </form>
- </body>
- </html>
<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
<html>
<head>
<title>form</title>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/my.js"></script>
<script type="text/javascript">
//检查用户名是否存在
function check_username(){
//step1,获得ajax对象
var xhr = getXhr();
var username = $V('userrname');
//step2,使用ajax对象发请求(get/post)
xhr.open('get','checkUsername?username='+username,true);
//step3,编写服务器端的处理程序
//step4,编写事件处理函数
xhr.onreadystatechange = function(){
if(xhr.readyState==4){
if(xhr.status==200){
//服务器访问正常
var txt = xhr.responseText;
$('check_msg').innerHTML = txt;
}else{
$('check_msg').innerHTML = '验证出错';
}
}
};
$('check_msg').innerHTML = '正在验证';
xhr.send(null);
}
//检查验证码是否正确
function check_number(){
var xhr = getXhr();
var code = $V('code');
xhr.open('get','checkNumber?code='+code,true);
xhr.onreadystatechange = function(){
if(xhr.readyState==4){
if(xhr.status==200){
//服务器访问正常
var txt = xhr.responseText;
$('code_msg').innerHTML = txt;
}else{
$('code_msg').innerHTML = '验证出错';
}
}
};
$('code_msg').innerHTML = '正在验证';
xhr.send(null);
}
</script>
</head>
<body>
<form action="" method="post">
<fieldset>
<legend>登陆</legend>
<!-- <a href="javascript:;" onclick="alert(getXhr())">测试获取ajax对象</a> -->
用户名:<input id="userrname" name="username" onblur="check_username();">
<span id="check_msg" style="color:red;"></span><br/>
密码:<input name="pwd" type="password"><br/>
验证码:<img id="image" src="checkcode" onclick="this.src='checkcode?'+(new Date()).getTime()">
<a href="javascript:;" onclick="$('image').src='checkcode?'+(new Date()).getTime()">换一张</a>
<input id="code" name="code" onblur="check_number();"/><span id="code_msg" style="color:red;"></span><br/>
<input type="submit" value="提交"><br/>
</fieldset>
</form>
</body>
</html>
my.js代码:封装的几个常用函数
- //根据id获取节点
- function $(id){
- return document.getElementById(id);
- }
- //根据id获取节点的值
- function $V(id){
- return $(id).value;
- }
- //获取ajax对象
- function getXhr(){
- var xhr = null;
- if(window.XMLHttpRequest){
- xhr = new XMLHttpRequest();
- }else{
- xhr = new ActiveXObject('Microsoft.XMLHttp')
- }
- return xhr;
- }
//根据id获取节点
function $(id){
return document.getElementById(id);
} //根据id获取节点的值
function $V(id){
return $(id).value;
} //获取ajax对象
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject('Microsoft.XMLHttp')
}
return xhr;
}
具体细节见代码
利用ajax异步校验验证码(转)的更多相关文章
- struts2中的Ajax异步校验
		登录时验证码的异步校验: 1.验证码生成的是图片因此在struts.xml文件里面配置action 时,result标签中type 属性是stream 2.验证码图片的src的值为配置action名字 ... 
- SSH实战  ·  AJAX异步校验
		前台JS代码 /*异步验证用户名的输入格式以及是否存在*/ function CheckUsername(){ /*取到用户名输入框*/ var nametxt = documen ... 
- 问答项目---登陆账号密码登陆做AJAX异步校验
		异步验证管理员帐号方法: /* 异步验证管理员帐号 */ public function checkAccount(){ if(!IS_AJAX){echo "页面不存在";die ... 
- Struts2学习(四)利用ajax异步上传
		上一篇说到怎样在struts2中进行上传下载.我们使用了struts的标签通过表单提交的方式,但大家知道表单提交会造成页面总体的刷新,这样的方式很不友好,那我们今天就来说说怎样结合ajax方式进行异步 ... 
- thinkPHP利用ajax异步上传图片并显示、删除
		近来学习tp5的过程中,项目中有个发帖功能,选择主题图片.如下: 利用原始的文件上传处理,虽然通过原始js语句能实时显示上传图片,但是这样的话会涉及很多兼容问题.使用ajax技术,实现选择性删除所选图 ... 
- 利用ajax异步处理POST表单中的数据
		//防止页面进行跳转 $(document).ready(function(){ $("#submit").click(function(){ var str_data= ... 
- Ajax实现验证码异步校验
		验证码异步校验可以防止表单提交后因验证码不正确导致已填的其它项都清空. 整个过程图如下 验证码输入框出代码 <div class="form-group"> <l ... 
- 利用onekeyup即可实现验证码的点击刷新功能
		显示验证码 首先在Home/Controller下创建一个公共控制器PublicController 1 <php2 namespace Home\Controller;3 4 use Thin ... 
- maven工程 java 实现文件上传 SSM ajax异步请求上传
		java ssm框架实现文件上传 实现:单文件上传.多文件上传(单选和多选),并且用 ajax 异步刷新,在当前界面显示上传的文件 首先springmvc的配置文件要配置上传文件解析器: <!- ... 
随机推荐
- docker中使用源码方式搭建SRS流媒体服务
			一.背景 搭建流媒体服务的方式一般会采用nginx+rtmp和srs服务两种,前者是nginx加上插件所用,而后者是专门为了为了流媒体而生,在这一节中我们将从头搭建srs流媒体服务 二. 运行环境 为 ... 
- elasticsearch query 和 filter 的区别
			Query查询器 与 Filter 过滤器 尽管我们之前已经涉及了查询DSL,然而实际上存在两种DSL:查询DSL(query DSL)和过滤DSL(filter DSL).过滤器(filter)通常 ... 
- kafka offset manage
			kafka low api:fetch数据从topic partition offset buffsize长度. 提交一般两个维度:时间维度,满多少条提交(0.8X之前是没这参数) 在0.8.2.2版 ... 
- WildFly配置gzip压缩
			使用jboss-cli.sh 执行下面的脚本 /subsystem=undertow/configuration=filter/gzip=gzipFilter:add() /subsystem=und ... 
- python内置类型详细解释
			文章编写借鉴于内置类型 - Python 3.7.3 文档,主要用于自己学习和记录 python主要内置类型包括数字.序列.映射.类.实例和异常 有些多项集类是可变的.它们用于添加.移除或重排其成员的 ... 
- /proc/cpuinfo和/proc/meminfo来查看cpu信息与内存信息
			#一般情况下使用root或者oracle用户查都可以. # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 --查 ... 
- mysql报错:You must reset your password using ALTER USER statement before executing this statement.
			新安装mysql后,登录后,执行任何命令都会报错: You must reset your password using ALTER USER statement before executing t ... 
- IndentationError: expected an indented block错误
			Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的python程序员,也可能陷入陷阱当中.最常见的情况是tab和空格的混用会导致错误,或者缩进不对,而这是用肉眼无法分 ... 
- combobox 的onLoadSuccess执行两次解决办法和 取值赋值
			加红色字部分 jsp <input class="easyui-combobox" id="keshi" name="keshi" v ... 
- Python学习之列表--自动超市购物车
			效果图: 实现代码: menu = [0,5000,500,9000,3000,30,50,7000,70,40]name = [0,"iphone","bicycle& ... 
