资讯专栏INFORMATION COLUMN

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

imingyu / 1741人阅读

摘要:技术的核心是对象即。收到响应后,响应的数据会自动填充对象的属性,相关的属性有作为响应主体被返回的文本。收到响应后,一般来说,会先判断是否为,这是此次请求成功的标志。中的版本会将设置为,而中原生的则会将规范化为。会在取得时报告的值为。

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个参数:

要发送请求的类型,如: get/post

请求的url

是否异步发送请求,这个参数是一个布尔值

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

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

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

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

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

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

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

responseText: 作为响应主体被返回的文本。

responseXML: 如果响应的内容类型是"text/xml"或者"application/xml",那么这个属性中将保存着包含响应数据的XML DOM文档。

status: 响应的HTTP状态

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://www.ucloud.cn/yun/82924.html

相关文章

  • 《Head First JavaScript》读书笔记

    摘要:设定的值的时候,即已自动暗示类型。第五章循环自我重复的风险数组用于在单一场所存储多段数据数组的页码称为键,索引只是一种形式特殊的键,它是数值键存储在数组里的数据不一定为相同类型并不要求二维数组具有相同的行数,但是最好保持一致。 ** 简介 **书名:《Head First JavaScript》中文译名:《深入浅出JavaScript》著:Michael Morrison编译:O’R...

    ztyzz 评论0 收藏0
  • 《JavaScript高级程序设计》(3版)读书笔记 1~2

    摘要:表示应该立即下载脚本,但不应妨碍页面中的其他操作可选。表示通过属性指定的代码的字符集。表示脚本可以延迟到文档完全被解析和显示之后再执行。实际上,服务器在传送文件时使用的类型通常是,但在中设置这个值却可能导致脚本被忽略。 第1章 JavaScript 简介 虽然JavaScript和ECMAScript通常被人们用来表达相同的含义,但JavaScript的含义比ECMA-262要多得多...

    Corwien 评论0 收藏0
  • 《JavaScript高级程序设计》(3版)读书笔记 3

    摘要:本质上是由一组无序名值对组成的。浮点数值的最高精度是位小数,但在进行计算时其精度远远不如证书。例如这是使用基于数值的浮点计算的通病,并非独此一家数值范围。 函数名不能使用关键字(typeof不行但typeOf可以,区分大小写) 标识符就是指变量、函数、属性的名字,或者函数的参数。 第一个字符必须是一个字母、下划线(_)或者一个美元符号($) 其他字符可以是字母、下划线、美元符号或...

    renweihub 评论0 收藏0
  • 《JavaScript高级程序设计》(3版)读书笔记 4 变量、作用域和内存问题

    摘要:具体说就是执行流进入下列任何一个语句时,作用域链就会得到加长语句的块。如果局部环境中存在着同名的标识符,就不会使用位于父环境中的标识符访问局部变量要比访问全局变量更快,因为不用向上搜索作用域链。 基本类型和引用类型的值 ECMAscript变量包含 基本类型值和引用类型值 基本类型值值的是基本数据类型:Undefined, Null, Boolean, Number, String ...

    lidashuang 评论0 收藏0
  • <javascript高级程序设计>十二读书笔记----偏移量

    摘要:包括元素的高度上下内边距上下边框值,如果元素的的值为那么该值为。该值为元素的包含元素。最后,所有这些偏移量都是只读的,而且每次访问他们都需要重新计算。为了避免重复计算,可以将计算的值保存起来,以提高性能。 offsetHeight 包括元素的高度、上下内边距、上下边框值,如果元素的style.display的值为none,那么该值为0。offsetWidth 包括元素的宽度、左...

    dayday_up 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<