AJax技术

掌握 Ajax,第 1 部分: Ajax 入门简介(3)

字号+ 作者:H5之家 来源:H5之家 2015-09-11 11:07 我要评论( )

不用担心,随着本系列文章的展开,事情会变得越来越复杂。您将看到如何发送 POST 请求、如何设置请求头部和内容类型、如何在消息中编码 XML、如何增加请求的安全性,可以做的工作还有很多!暂时先不用管那些难点,

不用担心,随着本系列文章的展开,事情会变得越来越复杂。您将看到如何发送 POST 请求、如何设置请求头部和内容类型、如何在消息中编码 XML、如何增加请求的安全性,可以做的工作还有很多!暂时先不用管那些难点,掌握好基本的东西就行了,很快我们就会建立一整套的 Ajax 工具库。

处理响应

现在要面对服务器的响应了。现在只要知道两点:

  • 什么也不要做,直到 xmlHttp.readyState 属性的值等于 4。
  • 服务器将把响应填充到 xmlHttp.responseText 属性中。
  • 其中的第一点,即就绪状态,将在下一篇文章中详细讨论,您将进一步了解 HTTP 请求的阶段,可能比您设想的还多。现在只要检查一个特定的值(4)就可以了(下一期文章中还有更多的值要介绍)。第二点,使用 xmlHttp.responseText 属性获得服务器的响应,这很简单。 中的示例方法可供服务器根据 中发送的数据调用。

    清单 6. 处理服务器响应

    function updatePage() { if (xmlHttp.readyState == 4) { var response = xmlHttp.responseText; document.getElementById("zipCode").value = response; } }

    这些代码同样既不难也不复杂。它等待服务器调用,如果是就绪状态,则使用服务器返回的值(这里是用户输入的城市和州的 ZIP 编码)设置另一个表单字段的值。于是包含 ZIP 编码的 zipCode 字段突然出现了,而用户没有按任何按钮!这就是前面所说的桌面应用程序的感觉。快速响应、动态感受等等,这些都只因为有了小小的一段 Ajax 代码。

    细心的读者可能注意到 zipCode 是一个普通的文本字段。一旦服务器返回 ZIP 编码,updatePage() 方法就用城市/州的 ZIP 编码设置那个字段的值,用户就可以改写该值。这样做有两个原因:保持例子简单,说明有时候可能希望 用户能够修改服务器返回的数据。要记住这两点,它们对于好的用户界面设计来说很重要。

    连接 Web 表单

    还有什么呢?实际上没有多少了。一个 JavaScript 方法捕捉用户输入表单的信息并将其发送到服务器,另一个 JavaScript 方法监听和处理响应,并在响应返回时设置字段的值。所有这些实际上都依赖于调用 第一个 JavaScript 方法,它启动了整个过程。最明显的办法是在 HTML 表单中增加一个按钮,但这是 2001 年的办法,您不这样认为吗?还是像 这样利用 JavaScript 技术吧。

    清单 7. 启动一个 Ajax 过程

    <form> <p>City: <input type="text" size="25" onChange="callServer();" /></p> <p>State: <input type="text" size="25" onChange="callServer();" /></p> <p>Zip Code: <input type="text" size="5" /></p> </form>

    如果感觉这像是一段相当普通的代码,那就对了,正是如此!当用户在 city 或 state 字段中输入新的值时,callServer() 方法就被触发,于是 Ajax 开始运行了。有点儿明白怎么回事了吧?好,就是如此!

    结束语

    现在您可能已经准备开始编写第一个 Ajax 应用程序了,至少也希望认真读一下 中的那些文章了吧?但可以首先从这些应用程序如何工作的基本概念开始,对 XMLHttpRequest 对象有基本的了解。在下一期文章中,您将掌握这个对象,学会如何处理 JavaScript 和服务器的通信、如何使用 HTML 表单以及如何获得 DOM 句柄。

    现在先花点儿时间考虑考虑 Ajax 应用程序有多么强大。设想一下,当单击按钮、输入一个字段、从组合框中选择一个选项或者用鼠标在屏幕上拖动时,Web 表单能够立刻作出响应会是什么情形。想一想异步 究竟意味着什么,想一想 JavaScript 代码运行而且不等待 服务器对它的请求作出响应。会遇到什么样的问题?会进入什么样的领域?考虑到这种新的方法,编程的时候应如何改变表单的设计?

    如果在这些问题上花一点儿时间,与简单地剪切/粘贴某些代码到您根本不理解的应用程序中相比,收益会更多。在下一期文章中,我们将把这些概念付诸实践,详细介绍使应用程序按照这种方式工作所需要的代码。因此,现在先享受一下 Ajax 所带来的可能性吧。

    参考资料 学习

  • Adaptive Path 是一家领先的用户界面设计公司,仔细阅读他们的网站可以更多地了解 Ajax。
  • 如果关心 Ajax 一词的来历,请看一看 Jesse James Garrett 和他的 Ajax 文章(比如 这一篇)。
  • 可以先了解下一期文章的主题 XMLHttpRequest 对象,请阅读 Using the XML HTTP Request object 这篇文章。
  • 如果使用 Internet Explorer,可以访问 Microsoft Developer Network 的 XML Developer Center。
  • 面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序(developerWorks,2005 年 9 月)介绍了这种革新方法,它解决了页面重新加载难题,可以创建动态的 Web 应用程序体验。
  • 面向 Java 开发人员的 Ajax: Ajax 的 Java 对象序列化(developerWorks,2005 年 10 月)介绍了在 Ajax 应用程序中对数据进行序列化的五种方法。
  • 通过 PHP 和 Sajax 使用 Ajax,简单 Ajax 工具包如何把服务器端 PHP 与 JavaScript 集成 (developerWorks,2006 年 5 月),这篇教程针对那些对开发丰富 Web 应用程序感兴趣的人,介绍了使用 Ajax 和 PHP 动态更新内容。
  • 使用 AJAX 调用 SOAP Web 服务,第 1 部分: 构建 Web 服务客户机(developerWorks,2006 年 1 月)介绍了如何使用 Ajax 设计模式实现基于 Web 浏览器的 SOAP Web 服务客户机。
  • XML 问题: 超越 DOM(developerWorks,2005 年 5 月)详细阐述了如何使用文档对象模型来构建动态 Web 应用程序。
  • 使用 AJAX 构建应用程序:学习用 AJAX 构建支持实时验证的 Web 应用程序(developerWorks,2006 年 3 月)演示了如何使用 Ajax 构造支持实时检验的 Web 应用程序。
  • 面向 Java 开发人员的 Ajax: 结合 Direct Web Remoting 使用 Ajax (developerWorks,2005 年 11 月)演示了如何实现 Ajax 的繁琐细节的自动化处理。
  • OSA Foundation 有一个 wiki 调查了 AJAX/JavaScript 库。
  • XUL Planet 的 对象参考部分 详细介绍了 XMLHttpRequest 对象(更不用说其他各种 XML 对象了,如 DOM、CSS、HTML、Web Service 以及 Windows 和 Navigation 对象)。
  • 请看看 Flickr.com 上展示的一些很棒的 Ajax 应用程序。
  • Google 的 GMail 是另一个利用 Ajax 的革命性 Web 应用程序的例子。
  • Head Rush Ajax (O'Reilly Media, Inc.,2006 年 2 月)包含了本文以及本系列文章所述的内容(还有更多),并采用了创新的获奖格式 Head First。
  • JavaScript: The Definitive Guide,第 4 版(O'Reilly Media, Inc.,2001 年 11 月)是关于 JavaScript 语言和使用动态网页的好资料。
  • developerWorks 中国网站 Web development 专区 专门发表关于各种基于 Web 的解决方案的文章。
  • 讨论
  • 参与论坛讨论。
  • Ajax.NET Professional 是关于 Ajax 各个方面的很好的 blog。
  • 通过参与 developerWorks blog 加入 developerWorks 社区。
  • 条评论

    developerWorks: 登录

    标有星(*)号的字段是必填字段。

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • JQuery实现Ajax加载图片的方法

      JQuery实现Ajax加载图片的方法

      2016-02-24 17:01

    • 判断用户是不是为ajax请求

      判断用户是不是为ajax请求

      2016-02-24 17:00

    • Ajax与WEB开发 by alixixi.com

      Ajax与WEB开发 by alixixi.com

      2016-02-11 11:02

    • jQuery.ajax()的相关参数及使用

      jQuery.ajax()的相关参数及使用

      2016-02-08 16:00

    网友点评