当前位置:首页 > 日记 > 正文

深入理解ajax系列第一篇之XHR对象

深入理解ajax系列第一篇之XHR对象

前面的话

  ajax是asynchronous javascript and XML的简写,中文翻译是异步的javascript和XML,这一技术能够向服务器请求额外的数据而无须卸载页面,会带来更好的用户体验。虽然名字中包含XML,但ajax通信与数据格式无关。下面将详细介绍ajax的内容

 创建

  ajax技术的核心是XMLHttpRequest对象(简称XHR),这是由微软首先引入的一个特性,其他浏览器提供商后来都提供了相同的实现。XHR为向服务器发送请求和解析服务器响应提供了流畅的接口,能够以异步方式从服务器取得更多信息,意味着用户单击后,可以不必刷新页面也能取得新数据

  IE5是第一款引入XHR对象的浏览器。在IE5中,XHR对象是通过MSXML库中的一个ActiveX对象实现的,而IE7+及其他标准浏览器都支持原生的XHR对象

  创建一个XHR对象,也叫实例化一个XHR对象,因为XMLHTTPRequest()是一个构造函数。下面是创建XHR对象的兼容写法

var xhr;if(window.XMLHttpRequest){  xhr = new XMLHttpRequest();}else{  xhr = new ActiveXObject('Microsoft.XMLHTTP');}

发送请求

open()

  在使用XHR对象时,要调用的第一个方法是open(),它接受3个参数:要发送的请求的类型 ("get"、"post"等)、请求的URL和表示是否异步发送请求的布尔值

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

  [注意]URL是相对于执行代码的当前页面,且只能向同一个域中使用相同端口和协议的URL发送请求。如果URL与启动请求的页面有任何差别,都会引发安全错误

send()

  send()方法接收一个参数,即要作为请求主体发送的数据。调用send()方法后,请求被分派到服务器

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

接收响应

  在收到响应后,响应的数据会自动填充XHR对象的属性,主要有以下4个属性

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

response

status: 响应的HTTP状态

statusText: HTTP状态的说明

  在接收到响应后,第一步是检查status属性,以确定响应已经成功返回。一般来说,可以将HTTP状态码为200作为成功的标志。此时,responseText属性的内容已经就绪,而且在内容类型正确的情况下,responseXML也可以访问了。此外,状态码为304表示请求的资源并没有被修改,可以直接使用浏览器中缓存的版本;当然,也意味着响应是有效的

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

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

异步

  如果需要接收的是异步响应,这就需要检测XHR对象的readyState属性,该属性表示请求/响应过程的当前活动阶段。这个属性可取的值如下:

0(UNSENT):未初始化。尚未调用open()方法

1(OPENED):启动。已经调用open()方法,但尚未调用send()方法

2(HEADERS_RECEIVED):发送。己经调用send()方法,且接收到头信息

3(LOADING):接收。已经接收到部分响应主体信息

4(DONE):完成。已经接收到全部响应数据,而且已经可以在客户端使用了

  只要readyState属性值由一个值变成另一个值,都会触发一次readystatechange事件。可以利用这个事件来检测每次状态变化后readyState的值。通常,我们对readyState值为4的阶段感兴趣,因为这时所有数据都已就绪

  [注意]必须在调用open()之前指定onreadystatechange 事件处理程序才能确保跨浏览器兼容性,否则将无法接收readyState属性为0和1的情况

xhr.onreadystatechange = function(){  if(xhr.readyState === 4){    if(xhr.status == 200){      alert(xhr.responseText);    }  }}

实例

  下面以一个小实例来演示ajax中xhr对象的应用

<button id="btn">获取信息</button><div id="result"></div><script>btn.onclick = function(){  //创建xhr对象  var xhr;  if(window.XMLHttpRequest){    xhr = new XMLHttpRequest();  }else{    xhr = new ActiveXObject('Microsoft.XMLHTTP');  }  //异步接受响应  xhr.onreadystatechange = function(){    if(xhr.readyState == 4){      if(xhr.status == 200){        //实际操作        result.innerHTML += xhr.responseText;      }    }  }  //发送请求  xhr.open('get','message.xml',true);  xhr.send();}</script>

//message.xml

<p>hello world</p>

最后

  通过实例的演示发现,ajax前端本身的内容并不难。但是,由于ajax涉及到一些后端及网络的知识,使得学起来不是很容易。以后的博文将逐步深入地介绍ajax的重点内容

以上所述是小编给大家介绍的深入理解ajax系列第一篇之XHR对象,希望对大家有所帮助!

相关文章

MySQL 5.0.96 for Windows x86 32

MySQL 5.0.96 for Windows x86 32

安装教程,精简版,电脑软件,MySQL,Windows,MySQL 5.0 因为“高级功能”少而成为一代经典,此为MySQL 5.0.96 for Windows x86 32位。精简后就只有几M,没办法。Microsoft Visual C++ 2005 Redistributable自行安装。一、ibdata1:1. INNODB类型表…

PHP配置,IIS整合PHP详解

PHP配置,IIS整合PHP详解

配置,详解,电脑软件,PHP,IIS,在iis上配置PHP是一件很容易的事,只要稍作几部设置就可以完成iis整合php的设置!下面给大家介绍下iis下整合php的详细教程:将PHP压缩包解压到某个位置,一般为 C:\PHP将php.ini-dist改名为php.ini,放到C:\windows目…

IIS出现RPC服务器不可用的解决方法

IIS出现RPC服务器不可用的解决方法

解决方法,服务器,不可用,电脑软件,IIS, 如果你运行IIS时也遇到&ldquo;RPC服务器不可用&rdquo;的故障提示,不妨试试我们下面的办法。 依次点击&ldquo;管理工具&rarr;服务&rarr;Remote Procedure Call&rarr;属性&rdquo;,其默认启动…

PS CS5怎么制作剔透的玻璃按键

PS CS5怎么制作剔透的玻璃按键

剔透,按键,玻璃,电脑软件,PS,   Photoshop CS5玻璃按钮的暗部非常少,重点是高光部分的渲染,可以先用图层样式做出内侧边缘高光及底部的投影;再用手绘的方法加上顶部的高光;其它部分可以加上一些环境光或倒影等即可。下面跟小编来…

PHP简单实现循环链表功能示例

PHP简单实现循环链表功能示例

简单实现,循环链表,示例,功能,电脑软件,本文实例讲述了PHP简单实现循环链表功能。分享给大家供大家参考,具体如下:概述:循环链表是另一种形式的链式存贮结构。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。如下图所示:实…

画家如何使用厚厚的画笔绘制图形

画家如何使用厚厚的画笔绘制图形

绘制图形,如何使用,画家,电脑软件,画家想用厚厚的画笔画出图形。下面,我们将看到详细的教程。请看下面的细节。 软件名称:Corel Painter 2016 V15简体中文注册安装软件大小:311mb更新时间:2016-01-14 1,打开画笔软件,单击鼠标左键{ }新建},在新…

PS快速合成超酷的特种兵战争海报

PS快速合成超酷的特种兵战争海报

特种兵,超酷,海报,战争,快速,今天为大家分享PS快速合成超酷的特种兵战争海报教程,对于这篇教程,小编觉得很值得学习,对于调色方便介绍地很详细,所以有需要的朋友可以参考一下,希望能对大家有所帮助!【声明】:本教程的创意和素材均非原创,原作者为国…

CAD栅格的设置技巧

CAD栅格的设置技巧

栅格,设置,技巧,电脑软件,CAD,栅格相当于手工绘图中使用的的坐标纸。那么我们在CAD绘图时会使用栅格,同时我们也会根据不同的需求来改变栅格。那栅格该如何设置呢?1.在状态栏中的栅格按钮上鼠标右键,出现下面的对话框,点击【设置】2.跳出下图…

"Request 对象 错误 'ASP 0104 : 80

"Request 对象 错误 'ASP 0104 : 80

对象,错误,解决办法,电脑软件,Request,Windows2003系统下,上传较大的文件时,出现&ldquo;Request 对象 错误 'ASP 0104 : 80004005'&rdquo;错误。更改win2003的IIS 6.0对asp的上传文件大小为200k限制,aspx的上传程序没有影响。在IIS6.0中,默认…

微信小程序之前台循环数据绑定

微信小程序之前台循环数据绑定

循环,数据绑定,前台,程序,电脑软件,微信小程序之前台循环数据绑定微信小程序的循环数据绑定到wxml例:wxml里:<view wx:for="{{array}}"> {{item.message}} </view>通过上面的wx.for可以绑定一个数组,数组是json类型的;默认的索引序号是ite…

怎么在excel中对数据进行统计excel

怎么在excel中对数据进行统计excel

数据,统计,步骤,方法,中对,  excel表格主要就是用来统计数据,也可以在上面划图,利用excel表格特别是在仓库、财务做帐是很方便的,下面小编就教你怎么在excel中对数据进行统计。在excel中对数据进行统计的步骤打一个excel表格表格,如图,简单的…

AI绘制可爱的腊肠狗和羊羊羊的卡通

AI绘制可爱的腊肠狗和羊羊羊的卡通

教程,绘制,卡通,形象,可爱,效果图:主要过程:12 3 阅读全文1 23 阅读全文教程结束,以上就是AI绘制可爱的腊肠狗和羊羊羊的卡通形象教程的全部内容,希望大家喜欢!相关教程推荐:AI绘制夸张有创意的狗狗插画 AI怎么绘制一个可爱的猫头鹰卡通形象? A…