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(),它接受三个参数:
- 要发送的请求类型
- 请求的URL,(即接口,必须是同源接口)
- 第三个表示是否异步发送请求的布尔值
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.on
ready
statechange事件
3.
xhr的
ready
State属性,用来表示当前
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