XHR是指XMLHttpRequest对象的缩写。是通过自己创建的用来承接ajax请求服务器返回数据的一个对象。IE5是第一款引入XHR对象的浏览器,在IE5中XHR对象是通过MSXML库中的一个ActiveX对象实现的。

在理解xhr的用法的时候,我们可以参照xhr的原生写法这样更好理解,下面是AJAX请求的原生写法:

            var xhr = new XMLHttpRequest();
			function getDatas(){
				xhr.open('post','php/getAlarmDatas.php');
				xhr.setRequestHeader('Content-type','application/x-www-form-urlencode');
				xhr.send('name'+deviceName);
				xhr.onreadystatechange = function(){
					if(xhr.status==200 && xhr.readyState==4){
						alarms = xhr.responseText;

使用xhr对象的时候,浏览器首先会检测原生的XHR是否存在,如果存在则返回它的新实例,如果原生对象不存在就检测ActiveX对象,如果都不存在,就抛出一个错误,然后我们可以使用如下方法创建XHR对象。

var xhr = new XMLHttpRequest();

也可以使用这种方法创建xhr对象

var xhr = createXHR();

要调用的第一个方法是open(),它接受三个参数:

  1. 要发送的请求类型
  2. 请求的URL,(即接口,必须是同源接口)
  3. 第三个表示是否异步发送请求的布尔值
xhr.open('post','php/getAlarmDatas.php');

但是,需要注意的是open不会真正发送一个请求,而是启动一个请求以备发送。

然后就会调用send方法,作为请求主题发送数据,如果不需要传递参数,也必须传入null,就像angular里即使没有参数也要传一个data参数,可以为空参数,但必须传。发送send之后,请求就会被分配给服务器,由于这次请求是同步的,Javascript代码会等到服相应之后把数据加到XHR对象的对应的属性上去。

xhr对象的属性简介如下:

  • responseText: 作为响应主体返回的文本
  • responseXML: 如果响应的内容类型是"text/xml"或者"application/xml",这个属性中将保存包含着响应数据的xml dom文档
  • status: 响应的http状态
  • statusText: http状态说明 

为了判断返回值是否正确,我们可以采用这种方法确认服务器端已经把数据给我们

xhr.open('post','php/getAlarmDatas.php',false);
			xhr.send(null);
			if((xhr.status>=200 && x.status < 300 || x.status ==304){
				alert(xhr.responseText);
			})else{
				alert('Request is unsuccessful'+xhr.status);

我们一般安装这种方式处理请求和返回的内容,但是多数情况下,我们还需要发送异步请求,才可以让javascript继续执行而不必等待相应,此时可以检查XHR的readyState属性,该属性表示请求/响应过程中的当前活动节点。这个属性的可取的值如下:

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

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

2:发送,已调用send()方法,但是尚未接收到响应

3:接收,已经接收到部分响应数据

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

因为我们一般发送的是javascript的异步请求,所以原生的数据返回正确的判定方法一般是

xhr.onreadystatechange = function(){
					if(xhr.status==200 && xhr.readyState==4){
						alarms = xhr.responseText;

只要请求状态变化一次也就是onreadyState变化一次,就会触发onchangeStatechange变化一次,所以这个状态变化就会进行一次判断。在onreadyStateChange事件处理程序的中使用xhr对象而不是使用this对象,原因是onreadyStatechange事件处理程序的作用域问题,如果使用This对象,在有的浏览器中会导致函数执行失败,或者导致错误的产生,因此使用实际的XHR对象是比较实用的一种方式。

XHR是指XMLHttpRequest对象的缩写。是通过自己创建的用来承接ajax请求服务器返回数据的一个对象。IE5是第一款引入XHR对象的浏览器,在IE5中XHR对象是通过MSXML库中的一个ActiveX对象实现的。  在理解xhr的用法的时候,我们可以参照xhr的原生写法这样更好理解,下面是AJAX请求的原生写法: var xhr = new XMLHt...   ajax是asynchronous javascript and XML的简写,中文翻译是异步的javascript和XML,这一技术能够向服务器请求额外的数据而无须卸载页面,会带来更好的用户体验。虽然名字中包含XML,但ajax通信与数据格式无关。下面将详细介绍ajax的内容   ajax技术的核心是XMLHttpRequest对象(简称XHR),这是由微软首先引入的一个特性,其他浏览器提供商后来都提供了相同的实现。XHR为向服务器发送请求和解析服务器响应提供了流畅的接口,能够以异步方式从服务器取得更多信息,意味着用户单击后,可以不必刷新页面也能取得新数据 就好像用户看到的都是由dom表现出来的,所有的业务处理都是在Page对象中处理的。如果业务越简单,创建的Page对象数量就会越少;如果业务越复杂,那么相对而言Page对象数量就越多(或Page实例对象就会越复杂)。 Page对象主要做以下事情: 渲染页面,保证dom元素的合理安排,以及事件的处理; 数据交互,将数据正确的放在dom元素中,并进行合理的前后端数据交互。 无论是在哪个时候,这两点确实是前端开发的重中之重,换一句话说这就是前端核心开发内容。 为了让Page对象更加专注于上面所提的两件事情, var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.onload = function(e) { GEThttp://www.example.com/getUsers // 获取用户列表 GEThttp://www.example.com/getUser?id=1 // 比如获取某一个用户的信息 POSThttp://www.example.com/modifyUser // 修改用户信息 GEThttp://www.example.com/deleteUser?id=1 ...
1. XMLHttpRequest(简称xhr)是浏览器提供的 JavaScript对象,通过他它,可以请求服务器上的数据资源 。之前所学的jQuery中的Ajax函数,就是基于xhr对象封装出来了的 2.用xhr发起 get请求 创建xhr对象 调用xhr. open()函数 调用xhr. send()函数 监听xhr.onreadystatechange事件 3. xhrreadyState属性,用来表示当前 Ajax请求所处的状态 。每个Ajax请求必然处于以下状态中的一个 :
ajax概念: ajax是asynchronous javascript and XML的简写,中文翻译是异步的javascript和XML,这一技术能够向服务器请求额外的数据而无须卸载页面,会带来更好的用户体验。虽然名字中包含XML,但ajax通信与数据格式无关。 ajax包括以下几步骤:1、创建AJAX对象;2、发出HTTP请求;3、接收服务器传回的数据;4、更新网页数据概括起来就是ajax通...
文章目录一.XMLHttpRequest对象1.使用XHR(1).代码示例(2).GET请求(3).POST请求(4).注意事项2.XMLHttpRequest Level 2(1).FormData(2).超时(3).overrideMimeType二.XMLHttpRequest事件1.事件类型2.load事件3.progress事件三.特殊网络请求1.跨域请求(1).简要说明(2).请求体和响应头交互(3)注意事项2.预检请求3.凭据请求四.Fetch API五.Streams API 一.XMLHt