关于Ajax在之前的学习中,已经对它的基础知识有了初步的了解。仅仅是欠实践。

那么接下来就让实践来检验一下真理吧!

基础见:http://blog.csdn.net/liu_yujie2011com/article/details/29812777

那么先回忆一下,Ajax是用来解决什么问题的?答案非常easy:解决同步和异步的问题。从而提高界面的友好型。增强用户体验。那么就结合“在加入用户时推断用户是否存在”的实例来体验一下吧。

一、HTML中input代码

  1. <tdwidth="78%">
  2. <inputname="userId" type="text" class="text1"id="userId"
  3. size="10"maxlength="10" onkeypress="userIdOnKeyPress()"value="<%=userId%>" onblur="validate(this)">
  4. <spanid="spanUserId"></span>
  5. </td>

二、Jsp界面代码

  1. <%@ pagelanguage="java" contentType="text/html; charset=GB18030"
  2. pageEncoding="GB18030"%>
  3. <%@ pageimport="com.bjpowernode.drp.sysmgr.manager.*" %>
  4. <%
  5. StringuserId=request.getParameter("userId");
  6. if(UserManager.getInstance().findUserById(userId) != null) {
  7. out.println("用户代码已经存在");
  8. }
  9. %>

三、Javascript代码

(一)创建Ajax引擎对象XMLHttpRequest

  1. var xmlHttp;
  2. functioncreateXMLHttpRequest() {
  3. //表示当前浏览器不是ie,如ns,firefox
  4. if(window.XMLHttpRequest){
  5. xmlHttp= new XMLHttpRequest();
  6. }else if (window.ActiveXObject) {
  7. xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9. }

(二)调用open方法与Ajax引擎建立连接,并告诉Ajax引擎我们的请求方式为get,请求url及採用异步方式

  1. functionvalidate(field){
  2. //alert(document.getElementById("userId").value);
  3. //alert(field.value);
  4. if(trim(document.getElementById("userId").value).length!= 0){
  5. //创建Ajax核心对象XMLHttpRequest
  6. createXMLHttpRequest();
  7.  
  8. //解决缓存方法,用毫秒
  9. varurl="user_validate.jsp?userId=" +trim(document.getElementById("userId").value)+ "&time="+new Date().getTime();
  10.  
  11. //设置请求方式用GET,设置请求的URL。设置异步提交
  12. xmlHttp.open("GET",url,true);
  13.  
  14. //将方法地址复制给onreadystatechange属性
  15. //相似于电话号码
  16. xmlHttp.onreadystatechange=callback;
  17.  
  18. //将设置的信息发送到Ajax引擎
  19. xmlHttp.send(null);
  20.  
  21. }else {
  22. document.getElementById("spanUserId").innerHTML= "";
  23. }
  24. }

(三)告诉Ajax引擎处理完后。我们通常指定一个方法句柄,从而Ajax就会调用我们指定的方法。这样就能够得到Ajax引擎返回的数据(回调机制)。指定的方法例如以下:

  1. function callback(){
  2. //Ajax引擎状态为成功
  3. if(xmlHttp.readyState==4){
  4. //http协议状态为成功
  5. if(xmlHttp.status==200){
  6. //alert("请求成功!
  7.  
  8. ")
  9. //推断假设为空,将红字span去掉
  10. if(trim(xmlHttp.responseText) != ""){
  11. document.getElementById("spanUserId").innerHTML= "<font color='red'>" + xmlHttp.responseText +"</font>"
  12. }else{
  13. document.getElementById("spanUserId").innerHTML= "";
  14. }
  15.  
  16. }else{
  17. alert("请求失败,错误码="+xmlHttp.status);
  18. }
  19.  
  20. }
  21. }

(四)最后调用send方法把我们步骤设置的參数发给Ajax引擎去处理。这里指的就是步骤二的“xmlHttp.send(null)”

四、注意

以上就是对Ajax的一个简单实现,但在这里还要注意几点:

(一)使用Ajax技术须要清除缓存。否则easy产生莫名其妙的错误,详细的方法有两种:

1.採用URL后跟上时间戳(产生随机数)来防止浏览器缓存,如:

//解决缓存方法,用毫秒

  1. varurl="user_validate.jsp?userId=" +trim(document.getElementById("userId").value)+ "&time="+new Date().getTime();

2.增加清除缓存代码,如:

  1. header("Cache-Control:no-cache, must-revalidate");
  2. xmlHttp.setRequestHeader("If-Modified-Since","0");
  3. xmlHttp.setRequestHeader("Cache-Control","no-cache");

(二)假设须要提起多个请求,须要创建多个XMLHttpRequest对象。

五、总结

通过以上的步骤大家基本上了解了Ajax实践的基本流程,那么接下来就要通过使用JS中的匿名函数来完毕推断用户时候存在的代码,期待下一篇吧!

Ajax实践之用户是否存在的更多相关文章

  1. Python编程从入门到实践笔记——用户输入和while循环

    Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...

  2. Django中,ajax检测注册用户信息是否可用?

    ajax检测注册用户信息主体思路 1.在settings.py中配置需要使用的信息 #对static文件进行配置 STATICFILES_DIRS=[ os.path.join(BASE_DIR,'s ...

  3. 通过配置http拦截器,来进行ajax请求验证用户登录的页面跳转

    在.NET中验证用户是否登录或者是否过期,若需要登录时则将请求转向至登录页面. 这个流程在进行页面请求时是没问题的,能正确进行页面跳转. 然而在使用xmlhttprequest时,或者jq的getJs ...

  4. Struts2+AJAX+JQuery 实现用户登入与注册功能。

    要求 必备知识 JAVA/Struts2,JS/JQuery,HTML/CSS基础语法. 开发环境 MyEclipse 10 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到演示地址哦): 关于U ...

  5. Struts2+AJAX+JQuery 实现用户登入与注册功能

    要求:必备知识:JAVA/Struts2,JS/JQuery,HTML/CSS基础语法:开发环境:MyEclipse 10 关于UI部分请查看下列链接,有详细制作步骤: 利用:before和:afte ...

  6. springmvc3 拦截器,过滤ajax请求,判断用户登录,拦截规则设置

    web.xml设置:(/拦截所有请求) <servlet> <servlet-name>dispatcher</servlet-name> <servlet- ...

  7. Thinkphp+AJAX动态验证用户输入是否合法

    遇到用户注冊等情况时.假设等用户输入全部信息,点击注冊button提交后.再验证输入是否正确,体验非常不好,并且非常浪费用户的时间,添加注冊成本,这里提供一个样例,演示了怎么使用ajax进行单步验证, ...

  8. 原生Ajax+springBoot实现用户登录

    思路:用户输入登录信息——信息传到后台——数据库查询——比较查询结果——返回登录信息(成功/失败) html页面代码: <!DOCTYPE html> <html lang=&quo ...

  9. 怎么用AJAX来判断dedecms用户是否登录呢

    JS代码:Copy code<script language="javascript" src="{dede:global name='cfg_cmspath'/} ...

随机推荐

  1. C# 32位程序访问64位系统注册表

    原文:C# 32位程序访问64位系统注册表 我的上一篇文章已经阐述了“32位程序和64位程序在64位平台上读\写注册表的区别”,那么接下来将要回答上篇所留下来的一个问题:32位程序如何访问64位系统注 ...

  2. Java笔试题1

    1. 下面的代码执行后,什么结果输出是? String s1 = new String("Test"); String s2 = new String("Test&quo ...

  3. unity3d 数学的数学基础和辅助类

    转载注明smartdot:http://my.oschina.net/u/243648/blog/67193 1.  数学(点乘/叉乘)/unity3d的数学辅助类 2.  坐标系统(本地/世界/屏幕 ...

  4. crm采用soap删除记录

    //抽样 function demo() {     //操作记录id     var targetId = "A8A46444-BA10-E411-8A04-00155D002F02&qu ...

  5. 怎样在Android开发中FPS游戏实现的两种方式比较

    怎样在Android开发中FPS游戏实现的两种方式比较 如何用Android平台开发FPS游戏,其实现过程有哪些方法,这些方法又有哪些不同的地方呢?首先让我们先了解下什么是FPS 英文名:FPS (F ...

  6. Mvc后台接收 参数

    @Html.TextAreaFor(m => m.Emps, new { @class = "easyui-validatebox", @style = "heig ...

  7. 玩转html5(四)----使用canvas画一个时钟(可以动的哦!)

    先给个效果图,我画的比较丑,大家可以自己美化一下, 直接上代码: <!DOCTYPE html> <meta charset="utf-8"> <ht ...

  8. CentOS6.2安装memcache

    一,安装libevent # cd /tmp # wget http://www.monkey.org/~provos/libevent-1.3.tar.gz # tar -zxvf libevent ...

  9. debain install scim

    1. su input root pwd 2. apt-cache search scim apt-get install scim apt-cache search scim-pinyin apt- ...

  10. Linux 常用命令解析和Bash Shell使用示例脚本演示

     摘要 Linux命令是基于文本格式输入输出的一种程序,依照Unix哲学中强调的程序功能简单,输入宽松,输出严谨,各种程序组合能够具有更强大的功能,而具有这样的灵活性的主要原因是Linux规定程序 ...