`
solorez
  • 浏览: 235927 次
  • 性别: 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基础教程(扫描版)

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

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

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

    w3shool AJAX 教程

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

    Ajax与PHP基础教程随书源码

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

    《Ajax与PHP基础教程》PDF

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

    ajax_ajax教程.

    四天学会AJAX,国内通常的读音为“阿贾克斯”和阿贾克斯足球队读音一样。Web应用的交互如Flickr, Backpack和Google在这方面已经有质的飞跃。这个术语源自描述从基于网页的Web应用到基于数据的应用的转换。在基于数据...

    Python3教程菜鸟教程.pdf

    Python3教程菜鸟教程 教程菜鸟教程 ADO 教程 Ajax 教程 Android 教程 AngularJS 教程 AngularJS2 教程 AppML 教程 ASP 教程 ASP.NET 教程 Bootstrap 教程 C 教程 C# 教程 C++ 教程 CSS 参考⼿册 CSS 教程 CSS3 教程 ...

    AJAX 教程(web程序开发)

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

    ajax基础教程(1)

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

    ajax基础教程(4)

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

    ajax基础教程(5)

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

    ajax基础教程(3)

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

    ajax基础教程(2)

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

    Ajax高级程序设计教程

    Ajax高级程序设计教程 一本Ajax入门好书,适合Ajax初、中级开发人员. This practical guide shows you how to make your Java web applications more responsive and dynamic by incorporating new Ajaxian features...

    这两天做了个类似Google suggest的搜索功能的Ajax代码,当然这段代码是在AJAX基础教程中示例4.9的基础上修改完成的.

    做了个类似Google suggest的搜索功能的Ajax代码,当然这段代码是在AJAX基础教程中示例4.9的基础上修改完成的.

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

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

    Ajax 教程 基础

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

    PHP培训教程之AJAX技术.docx

    AJAX2005年由Google发起并流行起来的编程方法,AJAX不一个新的编程语言,但它一个使用已有标准的新的编程技术。一种创建交互式网页应用的网页发技术。 使用AJAX可以创建更好,更快,更用户界面友好的Web应用。 AJAX...

    AJAX开发简略(附源代码)

    AJAX开发简略... 1 一、AJAX定义...... 二、现状与需要解决的问题......三、为什么使用AJAX....四、谁在使用AJAX....如今,随着Gmail、Google-maps的应用和各种浏览器的支持,AJAX正逐渐吸引全世界的眼球。

    利用 Google Web Toolkit 在 Java 框架中开发 Ajax 应用程序

    使用 Google Web Toolkit、Apache Derby 和 Eclipse 构建 Ajax 应用程序 图文教程

Global site tag (gtag.js) - Google Analytics