Ajax实践之用户是否存在

关于Ajax在之前的学习中,已经对它的基础知识有了初步的了解,只是欠实践。那么接下来就让实践来检验一下真理吧!

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

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

一、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技术需要清除缓存,否则容易产生莫名其妙的错误,具体的方法有两种:

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中的匿名函数来完成判断用户时候存在的代码,期待下一篇吧!

时间: 2024-12-16 13:04:18

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

Ajax实践之匿名函数判断用户是否存在

要想用匿名函数来实现用户是否存在,就应该明白:什么是匿名函数?是干什么的?怎么用?结合Ajax如何实现?那么就带着疑问进入研究中: 一.是什么? "匿名"根据字面意思理解就是没有名字的意思.如果你能理解到这那么你就对匿名函数有了一半的理解,即:匿名函数就是没有实际名字,也没有指针的函数.如: (function(){ //这里忽略所有实现 })(); 通过这个简单的匿名函数,我们来剖析它是怎么显现执行的?那么出现在眼前最多的就是"()",对的就是"()&q

PHP+AJAX 验证码验证用户登录

PHP+AJAX 验证码验证用户登录 2011-03-08 22:21:59|  分类: AJAX |  标签:php  ajax  验证登录   |举报 |字号大中小 订阅 用AJAX 验证用户登录的一个好处是不刷新跳转页面,外加用到验证码就更安全了,摸索的写了下.一共用到三个文件: yz.php:  生成验证码的PHP 文件,将验证码将在 SESSION 里,供登录时对比调用 index.php: 用户登录的HTML 文件 loginCheck.php: 验证用户登录的文件 下面一一解析:

PWA 渐进式实践 (3) - 用户体验 &amp; 性能

为了让我们的网站能达到更高的评分(咦,为什么变成刷分了),我们最后需要进行用户体验和性能的优化. 页面加载性能 我们需要尽可能把其他所有页面做成异步的,如: function getSubmitCase(nextState, callback) { require.ensure([], (require) => { callback(null, require('./containers/case/SubmitCasePage').default); }, 'SubmitCasePage');

Azure虚拟机管理最佳实践之用户凭据

还记的之前老猫关于通过Powershell远程管理Azure中虚拟机的博文的脚本中,每个虚拟机访问都需要通过get-credential交互方式取得用于访问的用户凭据,但是这这种方式每次都要进行用户交互,如果反复运行的脚本显然不是个好方式,如何加密保留用户的凭据以便反复使用就是个最佳实践的内容.当然现在国际版Azure中提供的自动化服务功能包含的Asset可以安全保留凭据用于自动化脚本调用,由于目前国内的Azure服务还没有这项功能,因此暂时只能按下不表了,当然如果只能这样本文也就结束了,这里介

struts2+ajax+json实现用户登录

实现的是异步刷新登录功能,返回出错信息时不刷新页面. 前端代码: <%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/

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

web.xml设置:(/拦截所有请求) <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name&

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

遇到用户注册等情况时,如果等用户输入所有信息,点击注册按钮提交后,再验证输入是否正确,体验很不好,而且很浪费用户的时间,增加注册成本,这里提供一个例子,演示了怎么使用ajax进行单步验证,使用thinkphp 3.2框架,环境WAMPServer 2.4,版本PHP 5.4.16+ Apache 2.4.4+ MySql 5.6.12 一.数据库设计: 数据库名 thinkphp 表名 tp_user 其中tp_是表前缀,可以在config.php中定义,操作表的时候只用user就行 二.页面设

spring4.0整合mongodb3.0.4项目实践(用户验证)

我们的项目用到了spring框架和mongdb数据库,随着mongodb升级到3.0已有半年时间,我们也开始随之升级,但是3.0的用户验证有所更改,导致原来的很多配置无法再用. 经过几天的尝试后,终于成功的用spring配置验证. 升级用了两个新的jar包,分别是pring-data-mongodb1.7.2(http://pan.baidu.com/s/1bnkAA67)和mongodb-java-driver3.0.2(http://pan.baidu.com/s/1jG6bc3c): sp

广播实践--强制用户下线功能

关于广播的基础知识参看我的这篇文章http://blog.csdn.net/jdfkldjlkjdl/article/details/43017091 下面是一个强制用户线下的例子.仅供参考. 强制下线功能需要先关闭掉所有的活动,然后回到登陆界面. 1.首先创建一个项目BroadcastBestPractice,并新建ActivityController类, package com.example.broadcastbestpractice; import java.util.ArrayList