Ajax实践之用户是否存在
关于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" onkeypress="userIdOnKeyPress()"value="<%=userId%>" onblur="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实践之用户是否存在的更多相关文章
- Python编程从入门到实践笔记——用户输入和while循环
Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...
- Django中,ajax检测注册用户信息是否可用?
ajax检测注册用户信息主体思路 1.在settings.py中配置需要使用的信息 #对static文件进行配置 STATICFILES_DIRS=[ os.path.join(BASE_DIR,'s ...
- 通过配置http拦截器,来进行ajax请求验证用户登录的页面跳转
在.NET中验证用户是否登录或者是否过期,若需要登录时则将请求转向至登录页面. 这个流程在进行页面请求时是没问题的,能正确进行页面跳转. 然而在使用xmlhttprequest时,或者jq的getJs ...
- Struts2+AJAX+JQuery 实现用户登入与注册功能。
要求 必备知识 JAVA/Struts2,JS/JQuery,HTML/CSS基础语法. 开发环境 MyEclipse 10 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到演示地址哦): 关于U ...
- Struts2+AJAX+JQuery 实现用户登入与注册功能
要求:必备知识:JAVA/Struts2,JS/JQuery,HTML/CSS基础语法:开发环境:MyEclipse 10 关于UI部分请查看下列链接,有详细制作步骤: 利用:before和:afte ...
- springmvc3 拦截器,过滤ajax请求,判断用户登录,拦截规则设置
web.xml设置:(/拦截所有请求) <servlet> <servlet-name>dispatcher</servlet-name> <servlet- ...
- Thinkphp+AJAX动态验证用户输入是否合法
遇到用户注冊等情况时.假设等用户输入全部信息,点击注冊button提交后.再验证输入是否正确,体验非常不好,并且非常浪费用户的时间,添加注冊成本,这里提供一个样例,演示了怎么使用ajax进行单步验证, ...
- 原生Ajax+springBoot实现用户登录
思路:用户输入登录信息——信息传到后台——数据库查询——比较查询结果——返回登录信息(成功/失败) html页面代码: <!DOCTYPE html> <html lang=&quo ...
- 怎么用AJAX来判断dedecms用户是否登录呢
JS代码:Copy code<script language="javascript" src="{dede:global name='cfg_cmspath'/} ...
随机推荐
- Windows Phone开发(26):启动器与选择器之MediaPlayerLauncher和SearchTask
原文:Windows Phone开发(26):启动器与选择器之MediaPlayerLauncher和SearchTask 启动器与选择器简单的地方在于,它们的使用方法几乎一模一样,从前面几节中,我相 ...
- iOS Dev (55) 获得本年度、月、日本和其他信息
iOS Dev (55) 获得本年度.月.日本和其他信息 作者:大锐哥 博客:http://prevention.iteye.com - NSDate *now = [NSDate date]; NS ...
- LVM逻辑卷管理@设备、格式、摩、引导自己主动安装一个完整的章节
离http://www.it165.net/admin/html/201307/1553.html LVM的重要性,在这里我也就不多说了,今天和大家分享一下.LVM设备,而且安装方式. 首先呢,先让我 ...
- putty中的一些经常使用操作
(和Linux中操作差点儿相同s) 删除文件夹 rm -rf /home/apache-tomcat-8.0.9 就会把home下的apache-tomcat-8.0.9目录给删除了 删除文件 rm ...
- twrp gui/actions.cpp 中的功能实现 tw_action ,tw_action_param ,第二章
继续分析 twrp ui.xml中的相关内容,以<page name="reboot">为讲解内容 <object type="button" ...
- js 加载初始化日期
//初始化加载时间 $(function(){ var now = new Date(); var year = now.getFullYear(); //年 ...
- IT忍者神龟之使用 PowerDesigner
1. 启动 PowerDesigner 新建物理数据模型 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmlweWhk/font/5a6L5L2T/fon ...
- 【新秀疯狂UML系列】——面向对象的技术
从软质工作开始,我们来到与面向对象的接触,接下来的学习材料似乎已经提到了面向对象,在与她的朋友去一个.所以,我们必须知道她多一点点. 一.何为面向对象? 面向对象(Object Oriented).是 ...
- 【PHP】PHP获得第一章
一,PHP上部和下部壳体敏感 1)所有的用户定义的函数.类和keyword敏感. 例如以下结果输出一致: echo "hello world" Echo "hello ...
- 【我们都爱Paul Hegarty】斯坦福大学IOS8公开组个人笔记28 ScrollView 幻灯片视图
随着移动设备,iphone屏幕尺寸的限制.超过内容的屏幕大小为scrollview于,通过滑动来获得.scrollview滑动方向可以是也可以是横向垂直,scrollview可以嵌套,例如,纵向滑动s ...