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

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

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

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

一、HTML中input代码

<tdwidth="78%">
<inputname="userId" type="text" class="text1"id="userId"
size="10"maxlength="10" οnkeypress="userIdOnKeyPress()"value="<%=userId%>" οnblur="validate(this)">
<spanid="spanUserId"></span>
</td>

二、Jsp界面代码

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

三、Javascript代码

(一)创建Ajax引擎对象XMLHttpRequest

    var xmlHttp;
functioncreateXMLHttpRequest() {
//表示当前浏览器不是ie,如ns,firefox
if(window.XMLHttpRequest){
xmlHttp= new XMLHttpRequest();
}else if (window.ActiveXObject) {
xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
}
}

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

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

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

function callback(){
//Ajax引擎状态为成功
if(xmlHttp.readyState==4){
//http协议状态为成功
if(xmlHttp.status==200){
//alert("请求成功!

") //推断假设为空,将红字span去掉 if(trim(xmlHttp.responseText) != ""){ document.getElementById("spanUserId").innerHTML= "<font color='red'>" + xmlHttp.responseText +"</font>" }else{ document.getElementById("spanUserId").innerHTML= ""; } }else{ alert("请求失败,错误码="+xmlHttp.status); } } }

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

四、注意

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

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

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

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

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

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

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

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

五、总结

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

Ajax实践之用户是否存在相关推荐

  1. UX最佳实践:提高用户体验影响力的艺术

    <UX最佳实践:提高用户体验影响力的艺术> 基本信息 原书名:UX Best Practices How to Achieve More Impact with User Experien ...

  2. Ajax实现验证用户登陆

    Ajax验证用户登陆 我们再写一个Demo,利用Ajax实现对用户登陆的验证 login.jsp 注意这里的===是js中的严格等于,不仅要求值相同,类型也要相同 <%--Created by ...

  3. AJAX——注册新用户的重名提示

    基本概念 AJAX:AJAX引擎其实是一个JavaScript对象,全写是 window.XMLHttpRequest对象,由于浏览器的版本不同,特别是老版本的IE浏览器,虽然也支持AJAX引擎,但是 ...

  4. AJAX实践DWR篇(转载)

    DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...

  5. ajax前端取消用户发送重复请求

    回到文章总目录 ajax重复发送请求 发送相同的请求. 我们的用户不断点击某个发送请求,服务端响应比较慢或者响应快,都回提升服务端的压力. 我们在前端设置好响应机制,减少服务端的压力. 前端设置通通的 ...

  6. 最佳实践 | 通过用户画像工具确定目标用户

    问题 产品的功能繁多,却无法真正满足任何一种用户的需求 不论什么规模的组织,资源永远是有限的.如果你想覆盖多种用户的需求,产品为很多不同类型的用户而设计,会使产品过于复杂,结果是任何一种用户你都无法真 ...

  7. 《用户至上:用户研究方法与实践》用户体验入门

    本节书摘来自华章出版社<用户至上:用户研究方法与实践>一书中的第1章,第1节,作者凯茜·巴克斯特(Kathy Baxter)[美] 凯瑟琳·卡里(Catherine Courage)凯莉· ...

  8. 【推荐实践】用户行为序列推荐模型

    文章作者:汪剑 出门问问 算法工程师 编辑整理:Hoh Xil 导读:今天我们谈谈用户行为序列上的推荐模型.首先我们对序列推荐问题做一个定义和描述,然后主要讲述可以用在序列推荐任务中的 NN 模型,最 ...

  9. (13)工业界推荐系统-小红书推荐场景及内部实践【用户行为序列建模】

    (1)工业界推荐系统-小红书推荐场景及内部实践[业务指标.链路.ItemCF] (2)工业界推荐系统-小红书推荐场景及内部实践[UserCF.离线特征处理] (3)工业界推荐系统-小红书推荐场景及内部 ...

最新文章

  1. 装了VS2005再装IIS的小问题
  2. 2300+ commits,80+ Contributors,阿里 PouchContainer 工程质量实践
  3. Unity3d疑难问题解决
  4. 剑与远征恶魔英雄瑟可斯,我们认识一下他的技能
  5. mysql 全文本检索的列_排序数据列以检索MySQL中的最大文本值
  6. 传智播客 C/C++学习笔记 字符串替换
  7. Pytm:威胁建模框架
  8. 【车辆分类】基于matlab的视频中车辆跟踪监测分类算法仿真,包括背景差分与帧间差分以及形态学处理
  9. ios零基础学习 准备什么,如何去学习
  10. history linux 位置,Linux基础知识之history的详细说明
  11. 【工具篇】---2DTileMapLevelEditor地图编辑器
  12. 怎么把html导入xmind,XMind思维导图怎么导入图标?
  13. 阿里天池比赛——地表建筑物识别
  14. 图像风格迁移cvpr2020_浅谈风格迁移(二)任意风格迁移
  15. MyEclipse的注册机的使用
  16. java 这么获取农历_用JAVA查询中国农历年
  17. FRED应用:激光二极管光源耦合到光纤的仿真
  18. StringBuffer之间的比较、String和StringBuffer的比较
  19. iptable 中文学习文档
  20. gdpr通用数据保护条例_从信息安全角度看通用数据保护条例(GDPR)

热门文章

  1. 微型计算机中的奔四指的是,2015云南省计算机等级考试二级理论考试试题及答案...
  2. input css年月日,input标签的type为date,显示的日期格式样式更改
  3. Linux做施压机的最大线程数,关于性能测试的几个要点
  4. mysql多实例配置安装_MySQL多实例安装配置方案
  5. threejs获取模型坐标_Threejs倒影实现解析
  6. 用java输入学生姓名查询成绩_编写一个Java程序,提示用户输入学生数量,学生姓名和他们的成绩,并按照成绩的降序打印学生姓名...
  7. 嵌入式linux启动根文件系统,嵌入式Linux根文件系统制作和挂载
  8. 从数据传输的角度辨析表单设计时的 get 和 post 提交方法
  9. MySQL 数据库添加数据时为什么会产生外码(外键)约束?原理就是什么?如何解决?
  10. 【c语言数据结构笔记】1.2 数据结构