转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
掌握 Ajax,第 1 部分: Ajax 简介         ★★★★

掌握 Ajax,第 1 部分: Ajax 简介

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1865 更新时间:2009/4/23 11:30:53
try {
 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
 try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (e2) {
    xmlHttp = false;
 }
}
@end @*/
 
if (!xmlHttp && typeof XMLHttpRequest != ''''undefined'''') {
 xmlHttp = new XMLHttpRequest();
}
  现在先不管那些注释掉的奇怪符号,如@cc_on,这是特殊的 JavaScript 编译器命令,将在下一期针对XMLHttpRequest的文章中详细讨论。这段代码的核心分为三步: 1.       建立一个变量xmlHttp来引用即将创建的XMLHttpRequest对象。 2.       尝试在 Microsoft 浏览器中创建该对象: o        尝试使用Msxml2.XMLHTTP对象创建它。 o        如果失败,再尝试Microsoft.XMLHTTP对象。 3.       如果仍然没有建立xmlHttp,则以非 Microsoft 的方式创建该对象。 最后,xmlHttp应该引用一个有效的XMLHttpRequest对象,无论运行什么样的浏览器。 关于安全性的一点说明 安全性如何呢?现在浏览器允许用户提高他们的安全等级,关闭 JavaScript 技术,禁用浏览器中的任何选项。在这种情况下,代码无论如何都不会工作。此时必须适当地处理问题,这需要单独的一篇文章来讨论,要放到以后了(这个系列够长了吧?不用担心,读完之前也许您就掌握了)。现在要编写一段健壮但不够完美的代码,对于掌握 Ajax 来说就很好了。以后我们还将讨论更多的细节。     Ajax 世界中的请求/响应 现在我们介绍了 Ajax,对XMLHttpRequest对象以及如何创建它也有了基本的了解。如果阅读得很仔细,您可能已经知道与服务器上的 Web 应用程序打交道的是 JavaScript 技术,而不是直接提交给那个应用程序的 HTML 表单。 还缺少什么呢?到底如何使用XMLHttpRequest。因为这段代码非常重要,您编写的每个 Ajax 应用程序都要以某种形式使用它,先看看 Ajax 的基本请求/响应模型是什么样吧。 发出请求 您已经有了一个崭新的XMLHttpRequest对象,现在让它干点活儿吧。首先需要一个 Web 页面能够调用的 JavaScript 方法(比如当用户输入文本或者从菜单中选择一项时)。接下来就是在所有 Ajax 应用程序中基本都雷同的流程: 1.       从 Web 表单中获取需要的数据。 2.       建立要连接的 URL。 3.       打开到服务器的连接。 4.       设置服务器在完成后要运行的函数。 5.       发送请求。 清单 5 中的示例 Ajax 方法就是按照这个顺序组织的:
清单 5. 发出 Ajax 请求
 
function callServer() {
 // Get the city and state from the web form
 var city = document.getElementById("city").value;
 var state = document.getElementById("state").value;
 // Only go on if there are values for both fields
 if ((city == null) || (city == "")) return;
 if ((state == null) || (state == "")) return;
 
 // Build the URL to connect to
 var url = "/scripts/getZipCode.php?city=" + escape(city) + "&state=" + escape(state);
 
 // Open a connection to the server
 xmlHttp.open("GET", url, true);
 
 // Setup a function for the server to run when it''''s done
 xmlHttp.onreadystatechange = updatePage;
 
 // Send the request
 xmlHttp.send(null);
}
  其中大部分代码意义都很明确。开始的代码使用基本 JavaScript 代码获取几个表单字段的值。然后设置一个 PHP 脚本作为链接的目标。要注意脚本 URL 的指定方式,city 和 state(来自表单)使用简单的 GET 参数附加在 URL 之后。 然后打开一个连接,这是您第一次看到使用XMLHttpRequest。其中指定了连接方法(GET)和要连接的 URL。最后一个参数如果设为true,那么将请求一个异步连接(这就是 Ajax 的由来)。如果使用false,那么代码发出请求后将等待服务器返回的响应。如果设为true,当服务器在后台处理请求的时候用户仍然可以使用表单(甚至调用其他 JavaScript 方法)。 xmlHttp(要记住,这是XMLHttpRequest对象实例)的onreadystatechange属性可以告诉服务器在运行完成后(可能要用五分钟或者五个小时)做什么。因为代码没有等待服务器,必须让服务器知道怎么做以便您能作出响应。在这个示例中,如果服务器处理完了请求,一个特殊的名为updatePage()的方法将被触发。 最后,使用值null调用send()。因为已经在请求 URL 中添加了要发送给服务器的数据(city 和 state),所以请求中不需要发送任何数据。这样就发出了请求,服务器按照您的要求工作。 如果没有发现任何新鲜的东西,您应该体会到这是多么简单明了!除了牢牢记住 Ajax 的异步特性外,这些内容都相当简单。应该感激 Ajax 使您能够专心编写漂亮的应用程序和界面,而不用担心复杂的 HTTP 请求/响应代码。 清单 5 中的代码说明了 Ajax 的易用性。数据是简单的文本,可以作为请求 URL 的一部分。用 GET 而不是更复杂的 POST 发送请求。没有 XML 和要添加的内容头部,请求体中没有要发送的数据;换句话说,这就是 Ajax 的乌托邦。 不用担心,随着本系列文章的展开,事情会变得越来越复杂。您将看到如何发送 POST 请求、如何设置请求头部和内容类型、如何在消息中编码 XML、如何增加请求的安全性,可以做的工作还有很多!暂时先不用管那些难点,掌握好基本的东西就行了,很快我们就会建立一整套的 Ajax 工具库。 处理响应 现在要面对服务器的响应了。现在只要知道两点:
  • 什么也不要做,直到xmlHttp.readyState属性的值等于 4。
  • 服务器将把响应填充到xmlHttp.responseText属性中。
其中的第一点,即就绪状态,将在下一篇文章中详细讨论,您将进一步了解 HTTP 请求的阶段,可能比您设想的还多。现在只要检查一个特定的值(4)就可以了(下一期文章中还有更多的值要介绍)。第二点,使用xmlHttp.responseText属性获得服务器的响应,这很简单。清单 6 中的示例方法可供服务器根据清单 5 中发送的数据调用。
清单 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 年的办法,您不这样认为吗?还是像清单 7 这样利用 JavaScript 技术吧。
清单 7. 启动一个 Ajax 过程
 
<form>
 <p>City: <input type="text" name="city" id="city" size="25" 
       onChange="callServer();" /></p>
 <p>State: <input type="text" name="state" id="state" size="25" 
       onChange="callServer();" /></p>
 <p>Zip Code: <input type="text" name="zipCode" id="city" size="5" /></p>
</form>
  如果感觉这像是一段相当普通的代码,那就对了,正是如此!当用户在 city 或 state 字段中输入新的值时,callServer()方法就被触发,于是 Ajax 开始运行了。有点儿明白怎么回事了吧?好,就是如此!  

上一页  [1] [2] 


[学习帮助]已知直线Y=-x+1 交X,Y 轴于A,B  [网页制作]需要掌握的八个CSS网页布局技巧!
[办公软件]在Excel中如何按选定区域只打印部分数据(局部打印…  [办公软件]掌握Excel十二条操作技巧,让工作更效益
[办公软件]如何在Excel表格单元格中输入比例(如4:1并让其正确…  [办公软件]如何计算Excel单元格公式中的部分代码
[办公软件]添加部分WORD文档页面码  [办公软件]喧宾不夺主—轻松掌握Word对象的叠放次序
[办公软件]掌握Word英文大小写转换,提高工作效益  [操作系统]全方位掌握系统自动更新的设置
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台