最近网上提的很多的一个新概念就是 AJAX 了, 那么, AJAX 是什么呢? 以下内容引用网上资料:
AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。它有机地包含了以下几种技术:
Ajax(Asynchronous JavaScript + XML)的定义
* 基于 web标准(standards-based presentation)XHTML+CSS的表示;
* 使用 DOM(Document Object Model)进行动态显示及交互;
* 使用 XML 和 XSLT 进行数据交换及相关操作;
* 使用 XMLHttpRequest 进行异步数据查询、检索;
* 使用 JavaScript 将所有的东西绑定在一起。英文参见Ajax的提出者Jesse James Garrett的原文
类似于DHTML或LAMP,AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。事实上,一些基于AJAX的“派生/合成”式(derivative/composite)的技术正在出现,如“AFLAX”。
AJAX的应用使用支持以上技术的web浏览器作为运行平台。这些浏览器目前包括:Mozilla、Firefox、Internet Explorer、Opera、Konqueror及Safari。但是Opera不支持XSL格式对象,也不支持XSLT。
与传统的web应用比较
传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然后返回一个新的网页。这个做法浪费了许多带宽,因为在前后两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。
与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。
关于 AJAX 提出者文档的翻译见这里: Ajax: A New Approach to Web Applications(中英对照) . 您可能想看看到底有什么很酷很炫的 Web 站点用到了 AJAX, 可以看这里: Google Suggest, Google Maps, 还有我个人做的一个小小的例子: AJAX Test.
AJAX 是一个新出现的名词, 但是引用的这几项技术都是老的存在了很久的技术, 甚至, 最大为推崇的 XMLHttpRequest 也不是 W3C 规范的一部分, 而是浏览器很早就内置的一个 JavaScript 对象. 这里的这几个概念中, 目前所见到的最多的应用就是 异步更新页面内容这个所说的亮点了. 其他的几个概念: XHTML + CSS, DOM, XML + XSLT, 都是做 WEB 表示层用的很熟很熟的几个技术了(当然, 用 JavaScript 解析 XML 可能用的人不多).
那么, 我就直奔主题: 怎么来用 AJAX 来解决实际的问题了. 现在依然不行, 因为关键的东西还不够. 如前所述, 异步操作的魔法就是 XMLHttpRequest 对象了, 这个对象怎样实现异步?? 那么首先让我们了解一下 XMLHttpRequest(see also The XMLHttpRequest Object).
首先 XMLHttpRequest 对象并非一个 W3C 标准, 它只是主要浏览器都支持的可以通过 JavaScript 在客户端访问其他 URL 内容的一个对象. 所以很不幸的您创建它的时候必须根据不同的浏览器来创建它(所谓的跨平台脚本编写):
在 Mozilla, Firefox, Safari, 和 Netscape 中:
var xmlhttp=new XMLHttpRequest()
在 Internet Explorer 中:
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
那么接下来最常用到的代码就像下面这样:
<script >
if (xmlhttp)
{
xmlhttp.onreadystatechange=xmlhttpChange;
xmlhttp.open("GET","http://www.somehost.com/test.htm",true);
xmlhttp.send();
}
}
function xmlhttpChange()
{
// if xmlhttp shows "loaded"
if (xmlhttp.readyState==4)
{
// if "OK"
if (xmlhttp.status==200)
{
// ...some code here...
}
else
{
alert("Problem retrieving XML data");
}
}
}
</script>
注意: 上面例子中一个很重要的属性就是 onreadystatechange, 可以讲这个就是异步处理的关键. 这个属性是一个事件处理器, 当网络请求的每次状态改变时这个方法都被触发. 状态码从 0 (uninitialized, 未初始化) 到 4 (complete, 完成). 通过在方法 xmlhttpChange() 中我们检查状态改变, 我们可以告诉什么时候连接完成并且只在 HTTP 操作成功(返回代码为 200)的时候来进行必要的处理.
为什么我们要在例子中使用异步操作?
所有的例子中我们都使用异步(async)模式 (open() 的第三个参数设置为 true). 异步模式参数指定请求时被异步处理与否. true 表示脚本将会在 send() 方法被调用后继续执行, 不需要等待服务器的返回; false 则表示脚本必须等到服务器返回一个请求后才能继续执行, 这时候将会有问题发生, 因为如果此时有网络或者服务器故障发生, 或者请求需要花费很长时间完成, 这时候浏览器窗口将会没有任何反应(常说的界面死掉), 甚至会出现"服务器没有返回"这样的错误, 所以为了更好的用户体验, 尽量使用异步模式来设计您的代码. open() 方法的第二个参数是 URL 地址,
好了, 说了这么多, 您可能迫不及待的想运行一个真实的例子, 请试试这个例子: 在线读取 TXT 文本并且显示在当前页面 ajax1.htm, 所用到的文本文件 textfile1.txt.
源码查看页面源代码就可以得到了.
最后, 您可能希望熟悉一下 XMLHttpRequest 对象来为以后更好的利用它打下基础:
The XMLHttpRequest Object Reference XMLHttpRequest 对象参考
Methods 方法
Method 方法 Description 描述
abort() Cancels the current request
取消当前请求
getAllResponseHeaders() Returns the complete set of http headers as a string
将完整的 HTTP 头部做为一个字符串返回
getResponseHeader("headername") Returns the value of the specified http header
返回给定的 HTTP 头的值
open("method","URL",async,"uname","pswd") Specifies the method, URL, and other optional attributes of a request
The method parameter can have a value of "GET", "POST", or "PUT" (use "GET" when requesting data and use "POST" when sending data (especially if the length of the data is greater than 512 bytes.
The URL parameter may be either a relative or complete URL.
The async parameter specifies whether the request should be handled asynchronously or not. true means that script processing carries on after the send() method, without waiting for a response. false means that the script waits for a response before continuing script processing
指定表单提交方法, URL, 以及请求的可选属性
method 参数可以是"GET", "POST" 或者 "PUT" 这些值中之一(使用"GET"来请求数据, 特别的, 当发送的数据长度大于512字节时使用 "POST").
URL 参数可以为相对的和完整的 URL.
async 参数指定请求是否为异步方式处理. true 意味着调用 send() 方法后脚本继续向下执行, 不需要等待响应. false 意味着脚本将等待响应之后才能继续执行
send(content) Sends the request
发送请求
setRequestHeader("label","value") Adds a label/value pair to the http header to be sent
在要发送的 HTTP 头中添加 标签/取值
Properties 属性
Property 属性 Description 描述
onreadystatechange An event handler for an event that fires at every state change
每次状态改变时除非的事件处理器
readyState Returns the state of the object:
0 = uninitialized
1 = loading
2 = loaded
3 = interactive
4 = complete
返回对象的状态
0 = 未初始化
1 = 载入中
2 = 已载入
3 = 交互
4 = 完成
responseText Returns the response as a string
将响应做为字符串返回
responseXML Returns the response as XML. This property returns an XML document object, which can be examined and parsed using W3C DOM node tree methods and properties
将响应做为XML返回. 这个属性返回一个 XML 文档对象, 可以用 W3C 的 DOM 节点树方法和属性进行检索分析
status Returns the status as a number (e.g. 404 for "Not Found" or 200 for "OK")
将状态做为数字返回(例如 404 为"Not Found" 或者 200 为 "OK")
statusText Returns the status as a string (e.g. "Not Found" or "OK")
将状态做为字符串返回(例如 "Not Found" 或者 "OK")
What's the next?
AJAX Follow Me - (2) GET 和 POST 配合表单
AJAX Follow Me - (3) 整合 XML 和 DOM
AJAX Follow Me - (4) 一个完整的实用例子
分享到:
相关推荐
ASP.NET AJAX,全称为ASP.NET Asynchronous JavaScript and XML,是一种微软提供的技术框架,...对于初学者来说,通过阅读"asp.net ajax初步入门"这样的电子图书,可以逐步掌握这些技能,开启在ASP.NET领域的开发之旅。
在提供的压缩包文件中,"ajax.JPG"可能是关于Ajax的示意图或流程图,"old_web.JPG"可能展示了没有Ajax的旧版网页,"day11.txt"可能包含了学习Ajax的笔记或教程,"ajax01"可能是Ajax代码示例或者练习项目。...
这个视频可能涵盖了Ajax的初步介绍,包括如何创建XMLHttpRequest对象,发送GET请求,以及处理简单的响应。观看此视频,学习者可以对Ajax有一个基本的认识,并开始动手实践。 综上所述,Ajax视频教程将涵盖Ajax的...
- **表单验证:** 提交表单之前可以在客户端进行初步验证,减少不必要的服务器请求。 - **动态加载内容:** 如Google Maps、PalmSphere等网站所采用的技术,可以实现实时加载地图或其他内容。 #### 六、总结 AJAX...
2. **客户端Applet**:随着Java的普及,Applets开始在浏览器中运行,提供了初步的客户端计算能力。 3. **JavaScript和VBScript**:JavaScript和VBScript成为客户端脚本语言,使得浏览器端有了更多的交互可能性。 4. ...
6. **表单验证**:在客户端进行初步验证后,AJAX将数据发送到PHP进行服务器端验证,防止跨站脚本攻击等安全问题。 7. **实时聊天**:AJAX可以定时轮询或使用WebSocket技术与PHP服务器通信,实现实时聊天功能。 8. ...
**Ajax异步提交详解** ...在MyEclipse项目中,通过分析`AjaxTest`的源码,我们可以学习到如何在实际开发中有效地运用Ajax进行异步数据交换。理解并掌握这些基本概念和步骤,对提升Web开发技能至关重要。
总的来说,这个压缩包提供了一个学习和实践Ajax、nodemon和axios的基础环境,通过Express框架可以构建一个简单的Web服务,然后利用Ajax进行前后端通信。nodemon确保了开发过程中代码更改的即时反馈,而axios作为...
开发者可以通过这些示例学习如何配置和使用Ajax控件,理解它们的工作原理以及如何与服务器端代码交互。示例网站通常包括了各种控件的使用场景,帮助开发者快速上手。 **EULA.rtf和ReadMe.txt** "EULA.rtf"是“最终...
你可以通过解压文件,运行其中的示例,学习并理解Ajax验证的具体实现。 总之,Ajax表单验证结合了前端和后端的优势,实现了高效且流畅的用户交互。通过使用PHP作为后端语言,可以灵活地实现各种复杂的验证逻辑,并...
通过这个简单的Ajax例子,你应该已经对Ajax有了初步的了解。随着实践的深入,你会发现Ajax在Web开发中有着广泛的应用,能够显著提升网站的用户体验和性能。继续学习和探索,你将能更好地掌握这一关键技术。
### AJAX学习指南——Java爱好者的导师 #### 一、AJAX定义 AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)是一种用于创建更快、更高效、更友好的Web应用程序的技术组合。它并不是一种单一的技术,...
最后,我们将引入Ajax,实现初步的客户端交互功能。 在这个过程中,你将学习到如何使用Struts的拦截器来添加全局行为,如登录验证;如何利用Spring的AOP进行权限控制;以及如何利用Ajax和JSON进行前后端通信。这将...
快速认识Ajax,简单,易于上手 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML) AJAX 不是新的编程语言,而是一种使用现有标准的新方法。 AJAX 是一种在无需重新加载整个网页的情况下,能够...
登录过程通常包括用户填写用户名和密码,前端使用JavaScript或jQuery进行初步的表单验证,然后使用AJAX发送POST请求到服务器上的JSP页面。JSP接收到请求后,连接MySQL数据库查询用户信息,如果找到匹配的记录,返回...
前3章涵盖了AJAX的基础概念、核心技术以及在实际开发中的初步应用。 第一章:AJAX概述 在这一章中,读者将了解到AJAX(Asynchronous JavaScript and XML)的核心理念,即通过JavaScript实现页面的异步更新,提升Web...
总的来说,这个项目展示了如何利用Python和Ajax技术获取并处理动态加载的网络数据,以及如何对获取的数据进行初步分析。对于学习Python爬虫和数据处理的初学者来说,这是一个非常有价值的实践案例。
学习和研究这个实例,开发者可以更好地理解如何在实际项目中应用HTML5和Ajax进行表单验证,提升用户界面的友好性和功能效率。 总的来说,HTML5和Ajax的结合不仅简化了表单验证的过程,还使得用户体验更加流畅。通过...
通过上述介绍,你已经对Ajax有了初步的认识。观看提供的SWF格式视频教程,将有助于你更深入地理解和掌握Ajax的实践应用。记住,实践是最好的老师,尝试在自己的项目中使用Ajax,不断提升技能水平。
接下来,阅读《Ajax新手快车道》PDF文档,你将更深入地学习如何在实际项目中运用这些知识,为你的Web开发之路打下坚实基础。记得实践是检验真理的唯一标准,动手尝试编写Ajax代码,理论结合实践,你将更快成为Ajax的...