Ajax与Comet-JavaScript高级程序设计第21章读书笔记(1)

Ajax(Asynchronous Javascript + XML)技术的核心是XMLHttpRequest对象,即: XHR。虽然名字中包含XML,但它所指的仅仅是这种无须刷新页面便可从服务器端获取数据的技术,其通讯与数据格式无关,并不必定是XML数据。javascript

XMLHttpRequest对象

IE7+、Firefox、Opera、Chrome 和 Safari 都支持原生的XHR对象。咱们能够直接使用XMLHttpRequest构造函数来建立XHR对象。php

var xhr = new XMLHttpRequest();html

虽然,IE7以前版本的浏览器中,建立xhr的方法与此有所不一样,可是,前端技术发展到今天,已经不多有业务需求是要支持IE7以前的版本了。所以,这里我略过这一状况。前端

XHR的用法

使用 XHR对象的时候,要调用的第一个方法是open(),它接受3个参数:java

  1. 要发送请求的类型,如: get/post
  2. 请求的url
  3. 是否异步发送请求,这个参数是一个布尔值

xhr.open('get', 'example.php', false)ajax

注意:open()方法的调用并不会真正发送请求,仅仅是启动一个请求以备发送!浏览器

另外,只能向同一个域中使用相同端口和协议的URL发送请求,不然,会出现错误。缓存

在执行open()方法以后,必须再调用send()方法,才会真正发起ajax请求。服务器

xhr.open('get', 'example.txt', false); xhr.send(null);

send()方法接收一个参数,即:要做为请求主体发送的数据。若是不须要发送数据,那么必须传入null,由于该参数对于部分浏览器而言是必需的。app

本例中的请求是同步的,Javascript代码会等到服务器响应以后再执行。
收到响应后,响应的数据会自动填充XHR对象的属性,相关的属性有:

  1. responseText: 做为响应主体被返回的文本。
  2. responseXML: 若是响应的内容类型是"text/xml"或者"application/xml",那么这个属性中将保存着包含响应数据的XML DOM文档。
  3. status: 响应的HTTP状态
  4. statusText: HTTP状态的说明

不管内容类型是什么,响应主体的内容都会保存到responseText属性中,而对于非XML数据而言,responseXML 属性的值将会是null

收到响应后,通常来讲,会先判断 status 是否为200,这是这次请求成功的标志。此时,responseText属性的内容已经就绪,并且在内容类型正确的状况下,responseXML也可以访问了。
另外,状态码status若是是304,那么表示请求的资源没有被修改,能够直接使用浏览器中的缓存,固然,这样的响应也是有效的。

if( (xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 ){ alert(xhr.responseText); } else{ alert('fail! status:' + xhr.status); }

有的浏览器会错误地报告 204 的状态代码。IE中 XHR 的ActiveX版本会将204设置为1223,而IE中原生的 XHR 则会将 204 规范化为 200。Opera会在取得204时报告 status的值为0。

原文连接:http://www.4455q.com/ajax-comet-javascript-chapter21-note1.html

相关文章
相关标签/搜索