有一半清醒,有一半醉!这可能是众位看客看过之前两篇博客后的感觉.没关系,继续闷头看起!!!
你的脑壳一定要建立这样一种信念,ajax不是新的技术,而是对客户端技术js/dom/css的综合运用而已.所以掌握ajax,最重要是在锤炼你的js/dom/css功底.从web应用角度来看,无非就是处理两种事情
1.request-请求即浏览器向服务器请求数据
我们来看看在request方都需要做哪些事情呢?
1.1XMLHttpRequest对象的构建
ajax方式的请求是借助浏览器的一个对象XMLHttpRequest来实现.而获取XMLHttpRequest对象在不同类型的浏览器中的方式不同,火狐浏览器直接通过new XMLHttpRequest()来完成,而对于IE浏览器来说,则需要根据IE的不同版本来实现XMLHttpRequest对象的构建.当获得XMLHttpRequest对象后保存在一个变量中,命名成http_request.
1.2设置响应处理函数
在发送请求数据的时候,就需要提前设置谁来处理服务器返回的数据,对客户端来讲,当然就是某个js函数了.这里设置响应处理函数用这样一句代码来实现:
http_request.onreadystatechange=doHandler;
其中,onreadystatechange是XMLHttpRequest对象上的一个属性,整句代码的意思是"当服务器将数据返回后,将数据交给函数名为doHandler的函数负责处理".函数doHandler需要你单独编写.
1.3构建请求服务器地址和发送数据
服务器地址的构建是根据客户端的请求方式的不同而不同,如果客户端请求方式为post时,这时,地址和请求数据的构建是分离的.在前文的实例当中,我们是将数据发送到服务器端的一个叫做CheckAccountServlet来处理,那么请求地址和数据的构建如下:
var url = CheckAccountServlet;
var data = "name=zhangsan&password=123"
如果服务器端地址为/abc/cfg/CheckAccountServlet,那么这里就应该变成var url = abc/cfg/CheckAccountServlet,总之这里的地址是跟你所请求的服务器地址始终保持一致.
而对于请求方式为get时,这时,地址和请求数据一起来构建成一个完成的url.示例代码如下:
var url = "CheckAccountServlet?name=zhangsan&password=123"
在发送时,就将url直接以get方式发送到服务器上.
1.4连接服务器
就跟你操作db一样,在真正执行sql语句之前,你必须先跟db连接上.同样的,ajax要想发送数据则也需先跟服务器建立连接,建立连接代码如下
http_request.open(method,url,flag);
其中,method代表客户端请求方式,取值为post或者get
url代表服务器地址(具体构建方式见1.3)
flag取值为true或者false,如果为true表示只有和服务器建立连接成功后才执行发送数据,否则,相反(建议设置为true)
1.5.发送请求数据
如果请求方式为get,由于数据已经一并附加到url后面,所以,发送时直接调用http_request.send(null)即可.
如果请求方式为post,则需要将按照格式构建好的数据传递给send函数,并且在调用send函数前还需加上另外一个行代码,整个代码如下:
http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
http_request.send(data);
至此,客户端的处理已经宣告结束.剩下的就是服务器端的处理了
2.response-响应即服务器将响应数据发送回浏览器
我们再来看看在response方都需要做哪些事情呢?
2.1获取请求数据
跟你获取表单数据一样,获取ajax提交上来的数据也是采用request.getParameter()来实现
2.2处理请求数据
具体的数据处理就是你的事情了(做你想做的一切事情!)
2.3输出响应数据
要想把响应数据输出给客户端,只能通过输出流的方式来实现.
PrintWriter out = response.getWriter();//获取输出流
out.println("Some message");//开始输出响应数据
.......
out.close();//关闭输出流
这里,需要重点强调几点:
2.3.1.如果输出信息中包含中文,则需要在获取输出流之前添加response.setContentType("text/html;charset=gb2312");
2.3.2.设置让浏览器无缓存,添加response.setHeader("Cache-Control","no-cache");
2.3.3.输出信息只允许两种形式,分别是文本信息和xml格式的字符串信息.如果是文本信息,则按照前面的方式直接输出即可.如果是xml格式的字符串信息,则需要更改2.3.1.提到的代码response.setContentType("text/html;charset=gb2312")为response.setContentType("text/xml;charset=gb2312")
至此,服务器端的响应信息已经输出完成(但我们的路还差最后一步哦,加点油,我们马上成功啦!!!)
2.4.客户端处理服务器返回的数据
那么,在哪来处理服务器返回的数据呢?还记得1.2提到的doHandler函数吗?
对了,doHandler函数就负责处理返回的数据的.来看看,它都做了哪些事情
/*具体负责处理服务器返回数据的函数*/
function doResponse(){
//当服务器将数据返回给客户端时,readyState状态值为4
if(http_request.readyState==4){
//当服务器返回的数据是正常的数据时,status状态值为200
if(http_request.status==200){
//通过XMLHttpRequest对象的responseText属性获取
//服务器返回的文本信息
var returnMsg = http_request.responseText;
//将响应信息显示到页面上
showMessage(returnMsg);
}
}
}
这里的函数doResponse函数就是起到doHandler的作用(说过了嘛,doHandler函数名称可以任意取的嘛,别纠着函数名不放好不好).
关键的地方在于通过什么来获取服务器给我们返回的数据.XMLHttpRequest对象上提供两个属性供我们抉择.
2.4.1.responseText-如果服务器端返回的是普通的文本信息的话,用它就够了.
2.4.2.responseXML-如果服务器端返回的是xml格式的数据,则需要用它.而如果用它的话,那么就需要dom技术来解析其中的数据喽!(见下回分解)
大功告成,一切的一切都已经OK,请问,您酒醒了吗?
分享到:
- 2007-05-23 18:21
- 浏览 2739
- 评论(4)
- 论坛回复 / 浏览 (1 / 3590)
- 查看更多
相关推荐
**AJAX探秘** AJAX(Asynchronous ...通过深入学习AJAX和RIA,开发者可以创建出更高效、更互动、用户体验更好的Web应用。无论是局部更新的动态交互,还是全方位的富互联网体验,都是提升网站质量的重要途径。
全书共分为4大部分,前3部分通过一些详细的小实例,介绍了Ajax技术中的各个组成部分,并深入这些组成元素的技术内部,力求挖掘出更完整、更深入的Ajax技术。最后一部分通过几个大型的实例,让读者深入领会Ajax技术...
这个源码集包含了他们教授Ajax技术时使用的实例代码,旨在帮助学习者深入理解Ajax的工作原理和实际应用。 【描述】:这份源码库详细展示了如何在Web开发中使用Ajax(异步JavaScript和XML)来实现页面的无刷新更新,...
【深入挖掘ASP.NET 2.0系列课程】 ASP.NET 2.0是微软推出的一款用于构建Web应用程序的框架,它是.NET Framework的一部分,旨在简化开发人员的工作流程,提高开发效率。本系列课程将深入探讨ASP.NET 2.0的核心概念、...
9. ASP.NET AJAX:为了实现页面的无刷新更新,ASP.NET引入了AJAX(Asynchronous JavaScript and XML)支持,通过Partial Page Rendering和UpdatePanel等技术,提升了用户体验。 10. 开发工具:Visual Studio作为...
本系列课程深入探讨了如何利用ASP.NET 2.0创建一个安全的网站,以下是其中的关键知识点: 1. **身份验证与授权**: ASP.NET 2.0提供了多种身份验证机制,如窗体身份验证(Forms Authentication)和Windows身份验证...
随着互联网技术的不断进步,WEB数据挖掘的理论与方法也在不断演化,为网络信息分析提供了更为深入的视角,并为各种基于网络的应用提供了强有力的技术支撑。对于从事数据科学、信息技术以及电子商务等领域的专业人员...
从以上标题和描述中,我们可以深入挖掘一系列关于Dojo框架及其在JavaScript和Ajax技术中的应用的知识点。Dojo框架自诞生以来,便以其强大的功能、灵活性以及对复杂Web应用的支持,吸引了大量开发者的关注。 ### ...
首先,让我们深入了解一下AJAX页面的爬取。常规的HTTP请求可能无法捕捉到AJAX加载的数据,因为这些数据是在页面加载后通过JavaScript异步请求获取的。为了解决这个问题,我们需要模拟浏览器的行为,比如使用Python的...
然而,尽管AJAX的基本应用已经广泛普及,但其更多潜在的应用场景仍有待挖掘。在本文中,我们将深入探讨如何利用JSON(JavaScript Object Notation)与JSON解析器构建一个高效且强大的数据传输层,以促进客户端与...
监测深度提升意味着监测系统能够更深入地分析数据,挖掘到更深层次的安全隐患。而监测效率提升则意味着系统能够更快速地响应变化,更准确地预测和预警可能出现的安全问题。 文章还提到了使用Ajax技术和SVG技术对...
- 熟练使用JS框架(如jQuery/YUI等),熟悉Ajax技术。 3. **住宅领域的技能要求**: - 数学、统计学、计算机等专业硕士毕业。 - 至少掌握Python、Scala、R等语言之一,Python优先。 - 掌握Oracle、MySQL、...
Java 爬虫技术在 IT 领域中扮演着重要的角色,特别是在数据挖掘、信息分析和自动化测试中。本项目“强力 Java 爬虫”着重于实现列表分页、详细页分页、处理 AJAX 请求以及采用微内核架构以实现高扩展性和灵活配置。...
### XSS(跨站脚本)攻击利用与挖掘详解 #### XSS攻击概述 XSS(Cross Site Scripting),即跨站脚本攻击,是一种常见的Web应用安全漏洞。它允许攻击者在受害者的浏览器上注入恶意脚本,从而进行一系列攻击行为,如...
json是一种轻量级的数据...下面我们正式来利用数据挖掘对json文件进行处理 现在很多网站都运用了Ajax,所以一般很多都是XHR文件 通过这里我想利用一个地图网站来演示 我们通过浏览器的调试获取了相关url https://di
中医慢病数据挖掘应用系统的开发是针对当前医疗领域中的一个重要分支——慢性疾病的管理进行深入研究。由于慢性疾病具有长期性和反复性等特点,传统的治疗和管理方法往往难以满足患者日益增长的需求。因此,利用现代...
根据提供的文件信息,我们可以深入探讨以下几个关键的知识点: ### 一、HTML结构化数据挖掘 #### 1.1 概念介绍 HTML 结构化数据挖掘是指从网页中提取有意义的信息,并通过各种技术和方法对其进行分析的过程。由于 ...
该项目是一个基于Java Web技术的实践应用,主要涵盖了JSP...开发者通过实践这个项目,不仅可以提升Java Web技能,还能深入理解推荐系统和数据挖掘的相关知识,对于从事大数据、人工智能和数据分析领域的工作大有裨益。
在本文中,我们将深入探讨JavaScript编程语言、数据挖掘技术以及它们如何结合在客户管理系统中发挥作用。 首先,JavaScript是一种广泛应用于网页和网络应用开发的脚本语言。它在客户端运行,为用户提供动态交互体验...