`

采用异步方式进行的验证码检验

阅读更多
这是网上搜到的源代码,这个东东解决我在B/S模式下做验证码的问题,让我真切的感受到了B/S模式下开发的真实情况。


/* namespacing object */
var net=new Object();
 
net.READY_STATE_UNINITIALIZED=0;
net.READY_STATE_LOADING=1;
net.READY_STATE_LOADED=2;
net.READY_STATE_INTERACTIVE=3;
net.READY_STATE_COMPLETE=4;
/*--- content loader object for cross-browser requests ---*/
net.ContentLoader=function(url,on_load,on_error,method,params,contentType){
  this.req=null;
  this.on_load=on_load;
  this.on_error=(on_error) ? on_error : this.defaultError;
  this.loadXMLDoc(url,method,params,contentType);
}
net.ContentLoader.prototype.loadXMLDoc=function(url,method,params,contentType){
  if (!method)
  {
	method="GET";
  }
  if (!contentType && method=="POST")
  {
	contentType='application/x-www-form-urlencoded';
  }
  if (window.XMLHttpRequest)
  {
	this.req=new XMLHttpRequest();
  }
  else if (window.ActiveXObject)
  {
  	//add try catch;
	 	try {
		    this.req = new ActiveXObject("Msxml2.XMLHTTP");
			}catch (e1){
					try {
						this.req = new ActiveXObject("Microsoft.XMLHTTP");					
						} catch (e2){
				}
		 }
			 	//
	//this.req=new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (this.req)
  {
	try
	{
	  var loader=this;
	  this.req.onreadystatechange=function()
	  {
		net.ContentLoader.onReadyState.call(loader);
	  }
	  this.req.open(method,url,true);
	  if (contentType)
	  {
		  this.req.setRequestHeader('Content-Type', contentType);
	  }
	  this.req.send(params);
	}
	catch (err)
	{
	  this.on_error.call(this);
	}
  }
}
net.ContentLoader.onReadyState=function(){
  var req=this.req;
  var ready=req.readyState;
  if (ready==net.READY_STATE_COMPLETE){
	var httpStatus=req.status;
	if (httpStatus==200 || httpStatus==0){
	  this.on_load.call(this);
	}else{
	  this.on_error.call(this);
	}
  }
}
net.ContentLoader.prototype.defaultError=function(){
  alert("error fetching data!"
	+"\n\nreadyState:"+this.req.readyState
	+"\nstatus: "+this.req.status
	+"\nheaders: "+this.req.getAllResponseHeaders());
}


调用方式

 new net.ContentLoader(url,subform,null,"GET","num="+obj.idCode.value,null); 

分享到:
评论

相关推荐

    12306验证码JAVA DEMO

    这可以采用模板匹配(预先准备好的字符模板与图像中的字符进行对比)或者更复杂的人工智能技术,如深度学习的OCR(光学字符识别)模型。在Java中,可以使用开源的Tesseract OCR引擎进行识别。 6. 异常处理和重试...

    短信验证码登陆测试

    前端需要验证手机号码格式是否正确,并通过AJAX异步请求触发发送验证码的过程。 2. **AJAX通信**:使用XMLHttpRequest或现代浏览器的fetch API,向后端服务器发送请求,携带用户输入的手机号码。这个请求通常需要...

    c#源码自动识别验证码.rar

    本项目“c#源码自动识别验证码.rar”是一个基于Winform的应用程序,利用C#进行开发,旨在自动识别各种图片形式的验证码。 在验证码识别过程中,主要涉及以下几个关键技术点: 1. 图像预处理:验证码图像往往含有...

    C#滑动验证码(类似腾讯滑动验证)

    - 对于高并发场景,验证API的性能优化必不可少,可以采用缓存策略、异步处理等技术提高服务响应速度。 总的来说,这个C#滑动验证码项目涵盖了前后端开发、数据库设计、安全性策略以及用户体验等多个方面,是理解...

    extjs 登陆页面+验证码

    当用户输入验证码后,我们可以使用`Ext.Ajax`发送异步请求到服务器进行验证。如果匹配,继续登录流程;如果不匹配,提示用户重新输入。 至于“回车提交”,ExtJS中的表单支持键盘事件监听。我们可以为整个表单添加`...

    (新浪投票验证码破解)自动识别应用

    5. 字符分割:在识别验证码前,通常需要先将单个字符从图像中分割出来,这可能涉及连通组件分析或边缘检测等技术。 6. 异常处理:在实际应用中,验证码可能会有不同的格式或质量,因此需要编写健壮的代码来处理各种...

    android 集成短信验证码功能

    3. 在用户输入验证码时,可以自动检测格式是否正确,提高验证效率。 通过以上步骤,你就可以在Android应用中集成短信验证码功能了。在实际开发中,可能还需要考虑更多细节,如异常处理、错误提示、多语言支持等。...

    滑动验证码 php+jq

    6. **安全考虑**:为了防止验证码被破解,开发者可能会采用一些安全策略,比如使用复杂的背景、扭曲文字、添加噪点,以及定期更换验证码模板。此外,服务器端还需要验证前端提交的数据,防止欺骗。 7. **响应式设计...

    ajax技术和数字相加二种验证码技术

    在验证码应用中,Ajax可以用来在用户提交验证答案后,异步地将答案发送到服务器进行验证,无需刷新整个页面。这样不仅提高了用户体验,也减少了服务器负载。 在实际应用中,开发者可以根据网站需求和目标用户群体...

    struts ajax 彩色验证码

    综上所述,这个项目结合了Struts和Ajax的优势,创建了一个能够进行用户名重复检测的用户注册系统,同时采用了彩色验证码增强安全性。XML解析被用来处理配置文件,而开发过程则借助了Eclipse或类似IDE的辅助。这是一...

    C# 验证码识别

    1. 图像预处理:首先,验证码图片需要进行预处理,包括灰度化、二值化、去噪等步骤,以提高字符的可识别性。在C#中,可以使用AForge.NET或Emgu CV等库来实现这些操作。 2. 分割字符:预处理后,需要将验证码图像中...

    Delphi 图形验证码识别引擎

    - 训练与识别模块:基于训练集建立识别模型,并对新验证码进行识别。 - 输出模块:显示识别结果并与用户输入的验证码进行比对。 5. **源码学习价值** 对于Delphi开发者来说,这个识别引擎的源码提供了实际应用...

    jQuery验证码输入框代码.zip

    后端验证通常在用户提交表单时进行,确保即使前端验证被绕过,也能检测出无效的验证码。 7. **用户体验优化**:为了提升用户体验,验证码插件可能包含一些附加功能,如自动清除输入框、错误提示显示、输入实时反馈...

    jQuery实现触屏滑块图片验证码插件.zip

    这种验证码机制旨在增强网站的安全性,防止恶意自动脚本(如机器人)进行非法操作,同时提供良好的用户体验,特别是对于移动用户。 1. **jQuery库**:jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、...

    JS注册验证拖拽和验证码功能的特效代码.zip

    - 校验输入:当用户提交表单时,前端将输入的验证码发送到服务器,与服务器存储的原始验证码进行比对,如果一致则验证通过。 在"132674366218959493"这个文件中,可能包含了实现这些功能的具体代码,包括HTML结构...

    python140登录网站验证码的生成与识别系统(django).rar

    在本项目中,验证码可能采用了随机字符、数字组合,甚至可能会加入一些扭曲、干扰线等元素以增加识别难度。生成验证码通常包括以下几个步骤: - 生成随机字符串或数字。 - 将字符串转化为图像,可能包含扭曲、旋转...

    Python代码源码-实操案例-框架案例-如何获取网页中动态加载的验证码图片.zip

    2. **使用Selenium结合PIL库**:一旦获取到验证码图片的URL,我们可以将其下载下来,再使用Python的图像处理库PIL进行处理,以便进行OCR(光学字符识别)识别验证码。例如: ```python import requests from PIL...

    批量检测微信开通工具批量检测微信开通工具

    - **模拟登录**:可能需要了解OAuth2.0授权协议,处理验证码,以及处理各种登录认证方式(如短信验证码、人脸识别等)。 - **多线程或异步处理**:为了提高检测速度,通常会使用多线程或异步编程技术,如Python的`...

    jQuery+Ajax+PHP+mysql实现无刷新注册/登陆(用户名邮箱验证码等)

    Ajax(异步JavaScript和XML)技术是实现无刷新页面的关键。通过Ajax,前端可以向服务器发送请求并在后台处理数据,然后将结果返回到前端,整个过程对用户来说是透明的。在注册和登录场景中,当用户填写完表单并点击...

Global site tag (gtag.js) - Google Analytics