`
solorez
  • 浏览: 245459 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
阅读更多

原文作者:Google
原文链接:Google AJAX Tutorial
译者:令狐葱


0. 读者对象和先验知识

 这个教程将包括Ajax的基础知识. 在此之前, 你需要知道CSS, DHtml以及Javascript的相关知识. 我们有关于使用ajax所必须知道的这些知识的相应的教程.

1. 简介

1.1 什么是Ajax


Ajax 是异步Javascript和XML(Asynchronous JavaScript and XML)的缩写. 它是一种创建交互式web应用的开发技术. 不像一般的网页一样当页面内容有所变化的时候需要重新加载整个页面, Ajax允许在后台只和服务器端交换少量的数据, 以及实现异步刷新.

这里有一些例子,点击查看.

Ajax 就是以下技术的结合:

  • CSS, 组成以及格式化内容
  • DOM(Document Object Model , 文档对象模型): 使用客户端脚本语言比如javascript 可以操纵DOM实现信息的动态显示以及交互.
  • XMLHttpRequest对象: 与web服务器端异步交换数据
  • XML: 有时被用在服务器端和客户端传送的数据格式, 当然, 其它格式也可以工作.

下面就是它的工作流程图:

ajax1.png

1.2 和服务器端交互

一旦网页上的DOM事件被触发, 我们需要获得一个XMLHttpRequest 对象. 这可以使用下面的一个函数来实现. 我们需要这样写来适应不同的浏览器. 注意我们使用onreadystatechange 来设置我们的回调函数.

var obj;

function ProcessXML(url) {
// native object
if (window.XMLHttpobject) {
// obtain new object
obj = new XMLHttpobject();
// set the callback function
obj.onreadystatechange = processChange;
// we will do a GET with the url; "true" for asynch
obj.open("GET", url, true);
// null for GET with native object
obj.send(null);
// IE/Windows ActiveX object
} else if (window.ActiveXObject) {
obj = new ActiveXObject("Microsoft.XMLHTTP");
if (obj) {
obj.onreadystatechange = processChange;
obj.open("GET", url, true);
// don't send null for ActiveX
obj.send();
}
} else {
alert("Your browser does not support AJAX");
}
}
下面介绍一下XMLHttpRequest  类的属性和方法:

属性

readyState 在一个请求周期里readyState 将从0到4间变化:
0: 未初始化.
1: 建立链接.
2: 收到请求.
3: 正在处理.
4: 完毕并准备反馈.
status 200: "OK"
404: 页面不存在.
onreadystatechange 通过这个属性设置回调函数
responseText 数据以文本的形式返回.
responseXml 数据以XML的形式返回.

方法

open(mode, url, boolean) mode: request(请求)的类型: GET 或者 POST
url: 文件位置
boolean: true (异步) 或者false (同步).
send("string") 使用GET则为null (in native mode; null not passed with ActiveX)


下面是一个使用onreadystatechange 属性注册的回调函数的例子:

function processChange() {
// 4 means the response has been returned and ready to be processed
if (obj.readyState == 4) {
// 200 means "OK"
if (obj.status == 200) {
// process whatever has been sent back here:
// anything else means a problem
} else {
alert("There was a problem in the returned data:n");
}
}
}
1.3 其他部分

让我们在一个小应用里使用上述代码, 来展示如何把代码组合到一起. 我们需要用户输入一个用户名, 然后发送这个用户名给服务器, 来验证这个用户名是否已经被其他人使用.

首先, 我们的html代码如下:
<BODY>
Enter your Username: < id="username" name="username" type="text" onblur="checkUserName(this.value,'')" >
</BODY>

下面就是客户端缺少的那部分代码: html代码中调用的这个函数来使整个过程顺利执行:

function checkUserName(input, response) {
// if response is not empty, we have received data back from the server
if (response != '') {
// the value of response is returned from checkName.php: 1 means in use
if (response == '1') {
alert("username is in use");
} else {
// if response is empty, we need to send the username to the server
url = 'http://localhost/xml/checkName.php?q=' + input;
ProcessXML(url);
}
}
}
注意, 从服务器端返回的数据需要被转换成文本或者XML格式. 函数processChange()处理返回数据. 下面是这个函数的实现详细信息:

function processChange() {
// 4 means the response has been returned and ready to be processed
if (obj.readyState == 4) {
// 200 means "OK"
if (obj.status == 200) {
// process whatever has been sent back here:
// we need to parse the returned data (text or XML)
// and then call checkUserName again with response set
// to the appropriate value.
// anything else means a problem
} else {
alert("There was a problem in the returned data:n");
}
}
}
现在我们只需要有服务器端的代码就可以是这个应用正常工作了, 需要一个客户端的脚本或者servlet来获取GET请求, 并检验用户名, 然后返回一个反馈信息. 下面是使用php实现的示例, 所有的东西都被硬编码, 所以可能看起来和真实应用的还有差距, 不过意思基本一样.

<?php header('Content-Type: text/xml');

function checkName($q) {
if (isset($q)){
switch(strtolower($q)) {
case 'maggie' :
return '1';
break;
...
default:
return '0';
}
} else {
return '0';
}

}
?>

2. Google 和Ajax
Ajax 在最近几年得以如此流行, 部分原因是因为Google 在Gmail, Google Maps 以及其他的基于web的应用里成功使用了此技术. 另外, Google还发布了一个针对网站管理员, 博客或者其他任何网站拥有者的API, 允许他们在站点中插入搜索.

有趣的是使用这个搜索用户不需要离开当前页面, 因为结果是使用ajax直接加载到搜索框的下面的. 搜索结果被分成4类: local, web, video, 以及blogs, 并且可以以标签的形式显示. 另外, 用户可以使用copy按钮直接复制结果到其他地方使用(比如发布blog评论等).

Google提供了一系列的教程和例子来教你如何让使用搜索API. 如果你在看 "hello world" 程序,你会发现, 有一个.css文件以及一个Javascript库被链接进去. 这个库中的函数使用ajax 来发送搜索请求到Google的服务器, 并且获得搜索结果. CSS和DHtml用来更新页面上的搜索结果.

我们使用Google提供的Ajax 搜索API做了一个教程. 这个教程不仅可以帮助你建立更加有趣的站点, 还可以帮助你理解API 以及基于事件的编程等重要概念.

3. 更多的例子和教程

下面是一些另外的关于Ajax的示例和教程:

添加评论

相关文章:

  2006 年互联网技术发展趋势

  Top 100 web2.0网站 最热门的100个网站

  三条提高gmail工作效率的可靠忠告

分享到:
评论
1 楼 猪立雨中 2007-10-19  
引用
    [/list][list=]
[/url][url][/i][i][u][/u][u]
引用
[/u]

相关推荐

    四天学会ajax_ajax教程.pdf

    这种技术被广泛应用于各种Web应用,如谷歌地图、Gmail、Facebook等,提供了流畅的滚动、实时搜索建议和即时反馈等功能。 在接下来的学习中,会逐步深入到每一个技术组件,理解它们如何协同工作,如何创建高效的Ajax...

    ajax教程_Ajax教程_

    **Ajax教程** Ajax,全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML),是一种创建动态网页的技术。它允许在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容,极大地提升了用户...

    Ajax基础教程(扫描版)

    google、microsoft、amazon和yahoo都已经全面采用ajax,新一代的网站如雨后春笋,迅速兴起。..  什么是ajax? ajax为什么会这么热,它到底有什么奇妙之处?ajax是少数高手才能使用的尖端技术吗?如何用ajax开发全新...

    Ajax教程 w3school离线版

    **Ajax教程 w3school离线版** Ajax,全称Asynchronous JavaScript and XML,是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新。这使得...

    Ajax基础教程(亚马逊计算机榜首图书,国内第1本Ajax图书) [第一部分 共两部分]

    Google、Microsoft、Amazon和Yahoo都已经全面采用Ajax,新一代的网站如雨后春笋,迅速兴起。.. 什么是Ajax? Ajax为什么会这么热,它到底有什么奇妙之处?Ajax是少数高手才能使用的尖端技术吗?如何用Ajax开发全新用户...

    w3shool AJAX 教程

    AJAX 是一种在 2005 年由 Google 推广开来的编程模式。 AJAX 不是一种新的编程语言,而是一种使用现有标准的新方法。 通过 AJAX,你可以创建更好、更快以及更友好的 WEB 应用程序。 AJAX 基于 JavaScript 和 ...

    非常好Ajax基础教程

    【Ajax基础教程详解】 Ajax(异步JavaScript和XML)是一种技术,它利用浏览器早已存在的功能,但直到近年来Gmail、Google搜索建议和Google地图等应用出现后才引起了广泛关注。Ajax的核心在于两个关键特性:无需刷新...

    Ajax实战教程

    Ajax的核心是JavaScript对象XMLHttpRequest,它最初由微软公司开发,后被 Mozilla、Apple 和 Google等浏览器制造商采用,从而成为一种事实上的标准。通过使用XMLHttpRequest对象,Web应用能够以异步方式从服务器获取...

    ajax教程及帮助文档

    本教程及帮助文档将深入讲解Ajax的核心概念和技术细节。** **一、Ajax基础** Ajax的基础在于JavaScript,通过创建XMLHttpRequest对象,我们可以与服务器进行通信。这个对象允许我们发送HTTP请求,并接收响应。在...

    ajax_ajax教程.

    - **Web2.0时代**: 随着技术的进步,出现了更多交互式的Web应用,例如Flickr、Backpack和Google Maps等。这些应用能够提供更流畅、更接近桌面应用的用户体验。 - **AJAX的兴起**: AJAX技术正是为了弥补传统Web应用的...

    AjAX教程.doc

    AJAX(异步JavaScript和XML)是一种用于创建交互性更强、响应速度更快的Web应用程序的技术,它在2005年由Google推广开来。尽管名称中含有XML,但AJAX并不仅限于XML,它通常涉及JSON和其他数据格式。AJAX的核心是...

    Ajax教程+实例

    Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。Ajax的核心是JavaScript对象XMLHttpRequest,它...

    Ajax与PHP基础教程随书源码

    《Ajax与PHP基础教程》内容完备,不仅讲述了一般会遇到的日常Web应用程序开发任务,如验证表单、文件上传、自动完成、工具提示、图片上传和显示等,完整演示了最常见也最实用的数据库驱动应用、Web服务、Google Maps...

    《Ajax与PHP基础教程》PDF

    《Ajax与PHP基础教程》内容完备,不仅讲述了一般会遇到的日常Web应用程序开发任务,如验证表单、文件上传、自动完成、工具提示、图片上传和显示等,完整演示了最常见也最实用的数据库驱动应用、Web服务、Google Maps...

    ajax系列教程 1

    早期的Ajax教程常提到XML作为数据交换格式,但实际应用中,JSON(JavaScript Object Notation)更受欢迎,因为其更简洁、易于阅读和编写。JSON是JavaScript的一个子集,可以直接被JavaScript解析,减少了数据处理的...

    Ajax_完整教程(ajax很好的文档)

    Ajax的应用场景广泛,例如在Google Maps中,用户可以通过拖动地图而无需等待整个页面重新加载。在电子商务网站上,用户可以添加商品到购物车,而页面其余部分保持不变。这些功能提高了用户的满意度,因为它们减少了...

    ajax教程(PPT)

    **Ajax(Asynchronous ...通过这个教程,即使是初学者也能深入理解Ajax的工作原理和实际应用,掌握如何利用Ajax提升网页的交互性和动态性。对于任何想要提升Web开发技能的人来说,这都是一份非常有价值的资源。

    AJax教程举一反三叫你学ajax

    这一技术的出现得益于Gmail、Google Suggest和Google Maps等应用程序的推动,它们展示了JavaScript的潜力,尤其是能够动态更新内容的能力。 在AJAX中,关键在于XMLHttpRequest对象。它是实现异步通信的核心,它在...

Global site tag (gtag.js) - Google Analytics