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

Ajax(Asynchronous Javascript + XML)手艺的中心是XMLHttpRequest对象,即: XHR。虽然名字中包括XML,但它所指的仅仅是这类不必革新页面即可从服务器端猎取数据的手艺,其通讯与数据格式无关,并不一定是XML数据。

XMLHttpRequest对象

IE7+、Firefox、Opera、Chrome 和 Safari 都支撑原生的XHR对象。我们可以直接运用XMLHttpRequest组织函数来建立XHR对象。

var xhr = new XMLHttpRequest();

虽然,IE7之前版本的浏览器中,建立xhr的要领与此有所不同,然则,前端手艺发展到本日,已很少有营业需求是要支撑IE7之前的版本了。因而,这里我略过这一状况。

XHR的用法

运用 XHR对象的时刻,要挪用的第一个要领是open(),它吸收3个参数:

  1. 要发送要求的范例,如: get/post

  2. 要求的url

  3. 是不是异步发送要求,这个参数是一个布尔值

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

注重:open()要领的挪用并不会真正发送要求,仅仅是启动一个要求以备发送!

别的,只能向同一个域中运用雷同端口和协定的URL发送要求,不然,会涌现毛病。

在实行open()要领以后,必须再挪用send()要领,才会真正提议ajax要求。

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

send()要领吸收一个参数,即:要作为要求主体发送的数据。假如不需要发送数据,那末必须传入null,由于该参数关于部份浏览器而言是必须的。

本例中的要求是同步的,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-com…

    原文作者:张文安
    原文地址: https://segmentfault.com/a/1190000009380276
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞