Ajax概述

一、Ajax概述

1. 默认不允许跨域

遵循浏览器同源策略,只能访问同域名下的子页面
跨域问题可以通过 后台开放 jsonp 的方式解决 

2.构造函数

var re = new XMLHttpRequest();

XMLHttpRequest对象只能通过 new 的方式构造一个新的 XMLHttpRequest对象实例,并没有字面量

var re = new XMLHttpRequest();//实例化XMLHttpRequest对象

    /*打开一个连接 
            第一个参数为method[get|post] method不仅仅是get与post!
            第二个参数为url地址
            第三个参数设置是否异步执行[true|fasle]默认异步true
	*/
    re.open("get",url,asynch);
    re.send();//发送数据,可通过 re.readyState 来监听是否发送完成
    
    //监听状态改变的方法,来查看数据是否完成
    re.onreadystatechange = function(){
        console.log(this.readyState);//this指向re,readyState为4证明数据已经发送完成
        console.log(this.state);//state为http状态码 200~ 300区间为发送成功 304为缓存数据,但也视为成功
    }

二、XMLHttpRequest属性

1. readyState

XMLHttpRequest实例化对象当前所处的状态
0已实例化XMLHttpRequest对象,但未调用open()方法
1 open() 方法已经被调用。
2 send() 方法已经被调用,且头部和状态已获取
3 数据正在加载中 responseText 可见部分数据(但是不完整)
4 数据已全部加载,可以正常使用

2. state

status是的HTTP状态编码
在请求完成前 ,status的值为0。值得注意的是,如果 XMLHttpRequest 出错 ,浏览器返回的 status 也为0。
200 ~ 300 为成功的状态码
304 表示当前请求与上次相同,所以没有去请求而直接返回了缓存数据
404 没有找到页面
... 更多http状态码

3. timeout

一个请求在被自动终止前所消耗的毫秒数。默认值为 0 
同步 XMLHttpRequests 请求中,没有timeout超时属性,超时将会抛出一个 InvalidAccessError 类型的错误。
当超时发生, ontimeout 事件将会被触发。

4. response

返回响应的正文,可以是 ArrayBuffer, Blob, Document, JavaScript对象 或 一个 DOMString 类型。根据设置的 responseType来返回对应数据类型!
如果请求未完成或未成功,响应值为null。但是,如果responseType的值设置为text或空字符串,则响应可以包含部分文本响应,而请求仍处于加载状态。

5. responseType

设置数据的类型[arraybuffer|blob|document|json|text] 默认就是text
服务器所返回的类型和你所设置的返回值类型必须未一致,否则为null
responseType 要么不设置!要么就要与服务器对应好!否则将抛出InvalidStateError异常。

6. responseText

返回一个字符串,如果请求不成功或尚未发送,则返回null。responseText属性在请求完成之前将会得到部分数据

7. responseXML

返回一个HTML或XML的Document数据
responseType 要么不指定 要么为 document,如果服务器未指定请求头(Content-Type)为[text/xml | application/xml]可使用overrideMimeType方法强制解析为XML!

re.overrideMimeType("[text/xml | application/xml]")// re为XMLHttpRequest的实例化对象

三、XMLHttpRequest方法

1. abort

取消ajax请求,如果该请求已被发出,XMLHttpRequest.abort() 方法将终止该请求。当一个请求被终止,它的 readyState 属性将被置为0

re.abort();//re为XMLHttpRequest的实例化对象,下同

2. getResponseHeader

获取请求头信息,XMLHttpRequest.getResponseHeader(name);name不区分大小写,
XMLHttpRequest.getAllResponseHeaders();获取所有请求头信息

re.getResponseHeader("Content-Type");//获取Content-Type信息

3. open

初始化一个请求。该方法要从JavaScript代码调用;想从原生代码初始化一个请求,可使用openRequest()替代
openRequest是一个底层方法,用法和open一样,一般用open
更多的method请求方式HTTP请求方法

re.open(method, url, async, user, password);//除了method与url其他参数均可选

4. overrideMimeType

指定一个MIME类型
指定具体的MIME类型去代替有服务器指定的MIME类型.
如果服务器没有指定类型,那么 XMLHttpRequest 将会默认为 "text/xml".

re.overrideMimeType(mimeType);//MIME类型

5. send

发送 HTTP 请求。
如果是异步请求(默认为异步请求),则此方法会在请求发送后立即返回;
如果是同步请求,则此方法直到响应到达后才会返回。接受一个可选的参数,其作为请求主体;如果请求方法是 GET 或者 HEAD,则应将请求主体设置为 null

[ArrayBuffer | ArrayBufferView | Blob | Document | DOMString | FormData ]
re.send();//可选参数 ArrayBuffer 不再是ajax规范,避免使用

6. setRequestHeader

是设置HTTP请求头部,必须在 open() 方法和 send()之间调用

re.setRequestHeader(key,value);

四、XMLHttpRequest事件

1. onloadstart

同img和video加载机制相同,在开始加载时触发

懒得写了~~

2. onprogress

ajax进度改变的时候触发 progress是个属性,可以查看当前的ajax进度

re.onprogress = function(e){
    /*loaded  在接受到了多少信息
    total   一共有多少信息*/
	console.log(e.loaded/e.total);//当前加载进度,
};

3. onabort

当一个资源的加载已中止时,将触发 abort事件(有兼容性问题,了解一下)

4. onerror

资源加载失败时会触发error事件。

5. onerror

资源加载失败时会触发error事件。

5. onloadend

loadend事件在资源的加载进度停止之后被触发 (例如,在已经触发“error”,“abort”或“load”事件之后)。

6. ontimeout

当进度由于预定时间到期而终止时,会触发ontimeout事件。timeout属性设置了超时的毫秒数

re.timeout = 10000;//设置了超时时长为1000毫秒;
re.ontimeout = function(){
    console.log("超时了!!!");
}

7. onreadystatechange

当readyState属性改变时触发 readyState等于4为加载完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值