Ajax由Html,JavaScript,DHtml,DOM组成,使用Ajax可以实现无刷新的数据交互。传统的数据交互方式是页面发送请求到服务器端,服务器端响应结果然会给页面,一般情况下都是整个页面进行刷新。使用Ajax可以实现局部刷新(可能你只需要刷新部分表单,而非整个表单),最常用的例子是,我们在用户注册的时候,往往会有一个功能是提示检测该用户名是否被占用。如果使用老的提交方式,返回结果重新刷新整个页面,可能用户先前操作的数据都不存在了。大部分网站选择的是局部刷新的方式。只刷新用户名框。这里使用Ajax可以轻松实现,下面我们一步一步的来揭开Ajax的神秘面纱吧。我们主要分为下面几个步骤来说:
<script language="javascript" type="text/javascript">
var xmlHttp = new XMLHttpRequest();
</script>
如上所示可以简单的获得XMLHttpRequest()方法。Ajax 基本上就是把 JavaScript 技术和 XMLHttpRequest
对象放在 Web 表单和服务器之间。当用户填写表单时,数据发送给一些 JavaScript 代码而不是 直接发送给服务器。JavaScript 代码在幕后发送请求,页面无任何刷新。并且请求是异步发送的,就是说 JavaScript 代码(和用户)不用等待服务器的响应,其和服务器响应同步运行。
但是有个问题就是js在不同的浏览器之间运行是具有不同的效果的,创建request对象也不例外。这里我们将上面的代码做下细化
<script language="javascript" type="text/javascript">
/* 创建一个新的Request */
var xmlHttp = false;
if (@_jscript_version >= 5)
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
//非IE浏览器的Request的创建
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
</script>
如上所示,可以应对不同浏览器之间Request的创建问题。这段代码的核心分为三步:
- 建立一个变量
xmlHttp
来引用即将创建的 XMLHttpRequest
对象。
- 尝试在 Microsoft 浏览器中创建该对象:
- 尝试使用
Msxml2.XMLHTTP
对象创建它。
- 如果失败,再尝试
Microsoft.XMLHTTP
对象。
- 如果仍然没有建立
xmlHttp
,则以非 Microsoft 的方式创建该对象。
最后,xmlHttp
应该引用一个有效的 XMLHttpRequest
对象,无论运行什么样的浏览器。
创建好Request我们要做什么呢?往下看。
我们先来看一个需要无刷新操作的表单
<form>
<p>username: <input type="text" name="username" id="username" size="25"
onChange="callServer();" /></p>
<p>password: <input type="text" name="password" id="password" size="25"
onChange="callServer();" /></p>
</form>
这个表单提供两个输入框,一个用于输入密码,一个用于输入用户名,我们这里做个简单的判断用户名是否被占用的无刷新操作。我们继续来看下,如何通过JS代码来从表单获取需要操作的数据,并向服务器端发送数据
function callServer() {
// 从表单当中获取用户名
var username = document.getElementById("username").value;
//判断用户名是否为空
if ((username == null) || (username == "")) return;
//构建需要发送请求的地址
var url = "<%=basePath%>ajaxDemo1?username=" + username;
// 建立连接,第一个参数表示请求方法,第二个参数为请求地址,第三个参数表示是否异步操作
xmlHttp.open("GET", url, true);
// 设置响应函数
xmlHttp.onreadystatechange = updatePage;
// 发送请求
xmlHttp.send(null);
}
以上代码很明确的表明了ajax的一个操作过程,首先需要从表单当中获取需要交给服务器端处理的数据。构建需要提交的服务器地址,本段代码当中url即为需要提交的服务器地址。参数在URL当中传递。构建玩提交的服务器地址以后,需要建立和服务器端的连接。这里的open方法其实提供5个参数:提交方式,提交地址,是否异步,用户名,密码。一半情况下不需要进行身份验证,所以这里值输入了三个参数。建立连接以后,我们需要设置服务器端响应以后的处理函数。
xmlHttp.onreadystatechange设置相应函数,这里服务器端返回的状态交由updatePage方法处理,该方法将会在后面
给出。一切搞定以后,下面干what呢?当然是发送请求了啊。
发送请求以后服务器端会进行相应的处理。下面就是啥了呢?
服务器端处理完毕以后,会返回给客户端,按照前面的设置返回只交由updatePage方法处理,updatePage
方法的实现如下图所示:
function updatePage() {
if (xmlHttp.readyState == 4) {
var response = xmlHttp.responseText;
alert(response);
//document.getElementById("result").value = response;
}
}
现在要面对服务器的响应了。现在只需要知道如下两点:
- 直到
xmlHttp.readyState
属性的值等于 4才处理相应请求。
- 服务器将把响应填充到
xmlHttp.responseText
属性中。
本程序当中将处理结果提示给用户
这里贴一下服务器端的部分代码吧:
response.setContentType("text");
String responseText = "OK";
String name = request.getParameter("username");
//String password = request.getParameter("password");
if(name.equals("foolfish")){
responseText = "the username is used";
}
PrintWriter out=response.getWriter();
System.out.println("responsetext = " + responseText);
out.println(responseText);
out.close();
好了,先写这么多吧,后面学习到更多的东西,继续往上面添。
分享到:
相关推荐
本教程将带您深入理解AJAX的基本概念,源码解读以及实用的实例应用,尤其适合初涉Web前端开发的读者。 **一、AJAX概述** AJAX的核心是JavaScript,它通过创建XMLHttpRequest对象来实现异步通信。这种技术使得用户...
无论你是初涉Web开发的新手,还是寻求提升的开发者,都能从中受益匪浅。同时,文档中的示例代码和练习题将帮助你巩固理论知识,提升动手能力。在学习过程中,记得多实践、多思考,相信你很快就能在PHP和Ajax的世界里...
总的来说,这个压缩包包含的网上开店教程和Ajax教程是全面且实用的,无论是对于初涉电商的新手,还是希望优化店铺交互体验的老手,都能从中受益。通过学习和实践,你将能够建立起自己的网上帝国,并借助Ajax技术为...
Ext界面生成器是一款强大的...无论你是初涉Web前端开发,还是在寻找提高开发效率的方法,这款生成器都值得尝试。通过实践和探索,你可以深入理解Ext的组件系统,掌握Ajax的运用,并能创建出专业且功能丰富的Web界面。
通过学习和实践这个"Spittr"案例,初涉Web开发的你将能够掌握一系列技能,为更复杂的项目打下坚实基础。记得逐步构建,理解每个部分的功能,并不断优化你的代码。祝你在探索Web开发的道路上一切顺利!
JQuery,作为一款广泛使用的JavaScript库,极大地简化了网页中的DOM操作、事件处理、动画制作以及Ajax交互。...无论你是初涉前端的新手,还是寻求进阶的开发者,这份JQuery学习资料都是一份宝贵的财富。
本文将深入探讨“项目中遇到的表单”这一主题,旨在帮助那些在IT行业初涉表单设计与实现的朋友们。 首先,我们要理解什么是表单。表单(Form)是一种网页元素,它允许用户向服务器提交数据。通常,表单包含输入字段...
总之,《MyEclipse 6 Java 开发中文教程》是一本全面、实用的指南,无论你是初涉Java开发的新手,还是希望提升开发效率的专业人士,都能从中受益。通过阅读并跟随教程操作,你将能熟练掌握MyEclipse 的使用,为你的...
《w3school全部手册》是一份综合性的Web开发学习资源,涵盖了从基础到高级的各种Web技术,包括HTML、XHTML、CSS、XML、DOM、JavaScript、...无论是初涉Web开发,还是希望巩固提升技能,这份手册都是不可或缺的工具。
本文将深入探讨一款基于ASP(Active Server Pages)的聊天系统——红鸟聊天室的源码,这对于初涉Web开发的程序员或正在进行毕业设计的学生来说,是一份宝贵的参考资料。 ASP是一种由微软公司推出的服务器端脚本环境...
【标题】"中文文档集合"提供了丰富的编程学习资源,涵盖了js、java、css、javascript、html5以及jQuery等关键Web开发技术。...无论你是初涉Web开发的新手还是寻求进阶的开发者,这个资料集合都是一个宝贵的资源库。
jQuery非常适合那些初涉Web开发的开发者,或者希望利用其丰富的插件库快速搭建交互式Web页面的高级开发者。下面我们来详细介绍一些jQuery的基础知识点: 1. jQuery的引入 - jQuery可以通过多种方式引入到项目中,...
总之,这个压缩包是一个丰富的学习和实践资源,无论你是初涉web开发的新手,还是寻求灵感的专业开发者,都能从中受益。通过深入理解并运用这些模板中的技术,你将能够构建出更具吸引力和互动性的网页。
《jsp项目全程实录开发》一书的源代码是一份宝贵的学习资源,涵盖了十个实际的Web开发项目,每个项目都配备了详细的开发文档,为学习者...无论你是初涉JSP,还是希望巩固技能,这个源代码压缩包都是一个宝贵的资源库。
本项目"ASP.NET 互动媒体学习社区系统"是一个面向初学者的实践平台,旨在帮助初涉.NET领域的人们更好地理解和应用ASP.NET技术。 该系统可能包含以下核心知识点: 1. **ASP.NET MVC(Model-View-Controller)架构**...
ASP.NET是由微软公司开发的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了丰富的功能和工具,简化了...无论你是初涉ASP.NET的新手,还是寻求进阶提升的开发者,都能从这个百例教程中受益匪浅。
《Angle - Bootstrap Admin App+jQuery:打造高效美观的后台界面》 Angle是一个基于...无论你是经验丰富的Web开发者,还是初涉后端界面设计的新手,Angle都能助你事半功倍,打造出既美观又实用的后台管理系统。
ASP.NET是微软公司推出的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了高效、安全和可扩展的开发环境。...无论你是初涉Web开发,还是希望提升已有技能,这都是一份宝贵的资源。
总体来说,这套《ASP.NET入门到精通电子书教程》全面覆盖了ASP.NET的各个方面,无论你是初涉Web开发的新手,还是寻求提升技能的开发者,都能找到丰富的学习材料。通过系统学习并实践书中的示例,你将能够熟练掌握ASP...