掌握Ajax,第3部分: Ajax中的高级请求和响应

全面理解 HTTP 的状态代码、就绪状态和 XMLHttpRequest 对象

简介:对于很多 Web 开发人员来说,只需要生成简单的请求并接收简单的响应即可;但是对于希望掌 握 Ajax 的开发人员来说,必须要全面理解 HTTP 状态代码、就绪状态和 XMLHttpRequest 对象。在本文 中,Brett McLaughlin 将向您介绍各种状态代码,并展示浏览器如何对其进行处理,本文还给出了在 Ajax 中使用的比较少见的 HTTP 请求。

在本系列的 上篇文章 中,我们将详细介绍 XMLHttpRequest 对象,它是 Ajax 应用程序的中心,负 责处理服务器端应用程序和脚本的请求,并处理从服务器端组件返回的数据。由于所有的 Ajax 应用程序 都要使用 XMLHttpRequest 对象,因此您可能会希望熟悉这个对象,从而能够让 Ajax 执行得更好。

在本文中,我将在上一篇文章的基础上重点介绍这个请求对象的 3 个关键部分的内容:

·HTTP 就绪状态

·HTTP 状态代码

·可以生成的请求类型

这三部分内容都是在构造一个请求时所要考虑的因素;但是介绍这些主题的内容太少了。然而, 如果您不仅仅是想了解 Ajax 编程的常识,而是希望了解更多内容,就需要熟悉就绪状态、状态代码和请 求本身的内容。当应用程序出现问题时 —— 这种问题总是存在 —— 那么如果能 够正确理解就绪状态、如何生成一个 HEAD 请求或者 400 的状态代码的确切含义,就可以在 5 分钟内调 试出问题,而不是在各种挫折和困惑中度过 5 个小时。

下面让我们首先来看一下 HTTP 就绪状态 。

深入了解 HTTP 就绪状态

您应该还记得在上一篇文章中 XMLHttpRequest 对象有一个名 为 readyState 的属性。这个属性确保服务器已经完成了一个请求,通常会使用一个回调函数从服务器中 读出数据来更新 Web 表单或页面的内容。清单 1 给出了一个简单的例子(这也是本系列的上一篇文章中 的一个例子 —— 请参见 参考资料)。

XMLHttpRequest 或 XMLHttp:换名玫瑰

Microsoft 和 Internet Explorer 使用了一个名为 XMLHttp 的对象,而不是 XMLHttpRequest 对象,而 Mozilla、Opera、Safari 和 大部分非 Microsoft 浏览器都使用的是后者。 为了简单性起见,我将这两个对象都简单地称为 XMLHttpRequest。这既符合我们在 Web 上看到的情况, 又符合 Microsoft 在 Internet Explorer 7.0 中使用 XMLHttpRequest 作为请求对象的意图。(有关这 个问题的更多内容,请参见 第 2 部分。)

清单 1. 在回调函数中处理服务器的响应

function updatePage() {
  if (request.readyState == 4) {
   if (request.status == 200) {
    var response = request.responseText.split ("|");
    document.getElementById("order").value = response [0];
    document.getElementById("address").innerHTML =
     response[1].replace(/\n/g, "<br />");
   } else
    alert ("status is " + request.status);
  }
}

这显然是就绪状态最 常见(也是最简单)的用法。正如您从数字 "4" 中可以看出的一样,还有其他几个就绪状态 (您在上一篇文章中也看到过这个清单 —— 请参见 参考资料):

·0:请求 未初始化(还没有调用 open())。

·1:请求已经建立,但是还没有发送(还没有调用 send())。

·2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。

·3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成 。

·4:响应已完成;您可以获取并使用服务器的响应了。

如果您希望不仅仅是了 解 Ajax 编程的基本知识,那么就不但需要知道这些状态,了解这些状态是何时出现的,以及如何来使用 这些状态。首先,您需要学习在每种就绪状态下可能碰到的是哪种请求状态。不幸的是,这一点并不直观 ,而且会涉及几种特殊的情况。

时间: 2024-09-28 01:13:34

掌握Ajax,第3部分: Ajax中的高级请求和响应的相关文章

Ajax 中的高级请求和响应

ajax|高级|请求|响应 对于很多 Web 开发人员来说,只需要生成简单的请求并接收简单的响应即可:但是对于希望掌握 Ajax 的开发人员来说,必须要全面理解 HTTP 状态代码.就绪状态和 XMLHttpRequest 对象.在本文中,Brett McLaughlin 将向您介绍各种状态代码,并展示浏览器如何对其进行处理,本文还给出了在 Ajax 中使用的比较少见的 HTTP 请求. 在本系列的 上篇文章 中,我们将详细介绍 XMLHttpRequest 对象,它是 Ajax 应用程序的中心

[四天学会ajax] 学习Ajax教程第三天,Ajax 中的高级请求和响应

ajax|高级|教程|请求|响应 对于很多 Web 开发人员来说,只需要生成简单的请求并接收简单的响应即可:但是对于希望掌握 Ajax 的开发人员来说,必须要全面理解 HTTP 状态代码.就绪状态和 XMLHttpRequest 对象.在本文中,Brett McLaughlin 将向您介绍各种状态代码,并展示浏览器如何对其进行处理,本文还给出了在 Ajax 中使用的比较少见的 HTTP 请求. 在本系列的 上篇文章 中,我们将详细介绍 XMLHttpRequest 对象,它是 Ajax 应用程序

ajax中的高级请求和响应

对于很多 Web 开发人员来说,只需要生成简单的请求并接收简单的响应即可:但是对于希望掌握 Ajax 的开发人员来说,必须要全面理解 HTTP 状态代码.就绪状态和 XMLHttpRequest 对象.在本文中,Brett McLaughlin 将向您介绍各种状态代码,并展示浏览器如何对其进行处理,本文还给出了在 Ajax 中使用的比较少见的 HTTP 请求: HTTP 就绪状态 HTTP 状态代码 可以生成的请求类型 深入了解 HTTP 就绪状态 0:请求未初始化(还没有调用 open()).

ajax完整入门教程+ajax实例教程

在一般的 Web 应用程序中,用户填写表单字段并单击 Submit 按钮.然后整个表单发送到服务器,服务器将它转发给处理表单的脚本(通常是 PHP 或 Java,也可能是 CGI 进程或者类似的东西),脚本执行完成后再发送回全新的页面.该页面可能是带有已经填充某些数据的新表单的 HTML,也可能是确认页面,或者是具有根据原来表单中输入数据选择的某些选项的页面.当然,在服务器上的脚本或程序处理和返回新表单时用户必须等待.屏幕变成一片空白,等到服务器返回数据后再重新绘制.这就是交互性差的原因,用户得

在php中判断一个请求是ajax请求还是普通请求的方法

/path/to/pkphp.com/script.php?ajax 在php脚本中使用如下方法判断: 复制代码 代码如下: if(isset($_GET['ajax'])) { ...这是一个ajax请求,然后... } else { ...这不是一个ajax请求,然后... } 通过传递_GET参数的方法简单实现了网页请求的判断.但是如果需要这样的功能,这个方法可能就有弊端,功能需求如下: 1.通过ajax请求的网页与普通请求的网页内容是不相同的 2.通过ajax请求的网页是为了方便用户操作

如何通过ajax访问aspx的CodeBehind中的方法

在项目中突然看到,aspx中的ajax可以访问aspx.cs中的方法,觉得很新奇,也许是lz少见多怪,不过,真的有发现新大陆似的那种兴奋,你也许知道这代表什么,学会了这种方式,代表你以后,可以建更少的页面,更少ashx,更少的.....能不兴奋吗?在lz的印象中,ajax一般都和一般处理程序联系起来的,请求另外的aspx页面就不说了,而请求自身CodeBehind中的方法真的很少见,这里记录一下,也许也有跟我一样不知道的朋友,希望能帮到你.只是知道ajax可以访问webservice中加webm

js中通过ajax无法获取json文件中的数据

问题描述 js中通过ajax无法获取json文件中的数据 在下小白,最近在学习js 就写了一段很简单的代码 但是发现居然还有问题 就是一个很简单的index-test.html页面中有一段js代码,里面用了ajax获取在同一目录下的 json文件中的数据,然后测试一下,但是运行发现没有结果 又不太会用浏览器调试 所以请教各位大侠 多谢多谢! 部署完项目 开启服务器后 在浏览器中输入URL,点击按钮 毫无反应... 多谢大家! 解决方案 ajax获取json格式数据js读取json文件片段中的数据

在php中判断一个请求是ajax请求还是普通请求的方法_php技巧

/path/to/pkphp.com/script.php?ajax 在php脚本中使用如下方法判断: 复制代码 代码如下: if(isset($_GET['ajax'])) { ...这是一个ajax请求,然后... } else { ...这不是一个ajax请求,然后... } 通过传递_GET参数的方法简单实现了网页请求的判断.但是如果需要这样的功能,这个方法可能就有弊端,功能需求如下: 1.通过ajax请求的网页与普通请求的网页内容是不相同的 2.通过ajax请求的网页是为了方便用户操作

Ajax案例集下载:新增分页查询案例(包括《Ajax开发精要》中的两个综合案例) 下载_AJAX相关

在<Ajax开发精要>中,我构建了两个简单的综合范例.一个是支持增.删.改.模糊搜索的简单留言簿,另外一个是模拟MSN Space所提供的日志评论.固定链接.引用通告以及自定义列表管理的功能. 今天新增一个分页查询的案例.同样的,与之前的两个案例类似,分页查询的持久化数据依然来自xml文档,以方便网友的拷贝和部署.构建这个案例的方法与之前两个案例大致相当,都是使用XMLHttpRequest.responseXML获取数据,然后填充到页面的相应位置.构建过程中注意代码复用. <Ajax开