精彩专题推荐:建站之入门课 建站之必修课 建站之关键课 网站价值所在 流量提高专题 css+div 标准 个人网站打造全过程
返回建站学首页
导航:
建站首页 | 网站设计 | 网站开发 | 网站运营 | 网页软件 | 建站指南 | 搜索优化 | 图像处理 | 视频教程 | 书籍教程 | 建站专题
当前位置:首页>网站开发>ajax教程>正文

使用javascript和Ajax发出异步请求


来源: 时间:06-12-06 点击: 点击这里收藏本文
  • 尝试创建 XMLHttpRequest 对象。
  • 如果失败(catch (trymicrosoft)):

    1). 尝试使用较新版本的 Microsoft 浏览器创建 Microsoft 兼容的对象(Msxml2.XMLHTTP)。

    2). 如果失败(catch (othermicrosoft))尝试使用较老版本的 Microsoft 浏览器创建 Microsoft 兼容的对象(Microsoft.XMLHTTP)。
  • 如果失败(catch (failed))则保证 request 的值仍然为 false。
  • 3. 检查 request 是否仍然为 false(如果一切顺利就不会是 false)。

    4. 如果出现问题(request 是 false)则使用 JavaScript 警告通知用户出现了问题。

    这样修改代码之后再使用 Internet Explorer 试验,就应该看到已经创建的表单(没有错误消息)。我实验的结果如 图 2 所示。

    静态与动态

    再看一看清单 1、3 和 4,注意,所有这些代码都直接嵌套在 script 标记中。像这种不放到方法或函数体中的 JavaScript 代码称为静态 JavaScript。就是说代码是在页面显示给用户之前的某个时候运行。(虽然根据规范不能完全精确地知道这些代码何时运行对浏览器有什么影响,但是可以保证这些代码在用户能够与页面交互之前运行。)这也是多数 Ajax 程序员创建 XMLHttpRequest 对象的一般方式。

    就是说,也可以像 清单 5 那样将这些代码放在一个方法中。

    清单 5. 将 XMLHttpRequest 创建代码移动到方法中

    <script language="javascript" type="text/javascript">

    var request;

    function createRequest() {

    try {

    request = new XMLHttpRequest();

    } catch (trymicrosoft) {

    try {

    request = new ActiveXObject("Msxml2.XMLHTTP");

    } catch (othermicrosoft) {

    try {

    request = new ActiveXObject("Microsoft.XMLHTTP");

    } catch (failed) {

    request = false;

    }

    }

    }

    if (!request)

    alert("Error initializing XMLHttpRequest!");

    }

    </script>

    如果按照这种方式编写代码,那么在处理 Ajax 之前需要调用该方法。因此还需要 清单 6 这样的代码。

    清单 6. 使用 XMLHttpRequest 的创建方法

    <script language="javascript" type="text/javascript">

    var request;

    function createRequest() {

    try {

    request = new XMLHttpRequest();

    } catch (trymicrosoft) {

    try {

    request = new ActiveXObject("Msxml2.XMLHTTP");

    } catch (othermicrosoft) {

    try {

    request = new ActiveXObject("Microsoft.XMLHTTP");

    } catch (failed) {

    request = false;

    }

    }

    }

    if (!request)

    alert("Error initializing XMLHttpRequest!");

    }

    function getCustomerInfo() {

    createRequest();

    // Do something with the request variable

    }

    </script>

    此代码惟一的问题是推迟了错误通知,这也是多数 Ajax 程序员不采用这一方法的原因。假设一个复杂的表单有 10 或 15 个字段、选择框等,当用户在第 14 个字段(按照表单顺序从上到下)输入文本时要激活某些 Ajax 代码。这时候运行 getCustomerInfo() 尝试创建一个 XMLHttpRequest 对象,但(对于本例来说)失败了。然后向用户显示一条警告,明确地告诉他们不能使用该应用程序。但用户已经花费了很多时间在表单中输入数据!这是非常令人讨厌的,而讨厌显然不会吸引用户再次访问您的网站。

    如果使用静态 JavaScript,用户在点击页面的时候很快就会看到错误信息。这样也很烦人,是不是?可能令用户错误地认为您的 Web 应用程序不能在他的浏览器上运行。不过,当然要比他们花费了 10 分钟输入信息之后再显示同样的错误要好。因此,我建议编写静态的代码,让用户尽可能早地发现问题。

    用 XMLHttpRequest 发送请求

    得到请求对象之后就可以进入请求/响应循环了。记住,XMLHttpRequest 惟一的目的是让您发送请求和接收响应。其他一切都是 JavaScript、CSS 或页面中其他代码的工作:改变用户界面、切换图像、解释服务器返回的数据。准备好 XMLHttpRequest 之后,就可以向服务器发送请求了。

    9 7 3 1 2 3 4 5 6 7 8 4 8 :

      把此文章收藏到:          
    广而告之
    文章搜索
    • Google JZxue.Com

    关于我们 | 联系我们 | 友情链接 | 网站地图
    Copyright © 2005 - 2006 建站学 All rights reserved.