标签:blank 语言 href doc https asc 5.5 ble The
概念:源自百度百科 — — AJAX(Asynchronous Javascript And XML)
简单概括一下:
主要属性和方法
①创建对象
var xhr //此时xhr相当于客户端与服务器之间的中间人 if(window.XMLHttpRequest) //IE6.0 和 IE5.5中,window没有XMLHttpRequest属性 { xhr = new XMLHttpRequest(); } else if(window.ActiveXObject) //IE6.0 和 IE5.5中,用此方法创建 { xhr = new ActiveXObject(‘Microsoft.XMLHTTP‘); }
②向服务器发送请求
一般客户端向服务器发送请求为GET和POST两种,,在XMLHttpRequest对象中,通过以下方法实现:
xhr.open(method, url, async) ----------------------------- //method:有GET、POST等HTTP请求方法 //url:向服务器请求资源的url //async:是否异步请求。true为异步、false为同步
------------GET---------------- //将参数配置到url中 xhr.open(‘GET‘, ‘Http://www.jaykoo.com/index.php?foo=bar&lorem=ipsum‘, true) xhr.send() ------------POST---------------- xhr.open(‘POST‘, ‘Http://www.jaykoo.com/index.php‘, true) xhr.setRequestHeader("Content-type","application/json; charset=utf-8") //将参数放置在HTTP内容中进行POST请求 //send(body),一般要把传送的数据放在body中 xhr.send(‘foo=bar&lorem=ipsum‘)
看完上面的 send() 操作,有以下两个疑问(待解决):
③请求状态的变化以及响应事件
AJAX请求分为几个阶段,在XMLHTTPRequest中通过readystate属性来指定不同的阶段状态。当状态改变时会通过onreadystatechange属性来调用回调函数,对不同阶段状态的改变作出响应操作。
readystate
状态值 | 描述 |
0 | XMLHttpRequest 代理已被创建, 但尚未调用 open() 方法。 |
1 | open() 方法已经被触发。在这个状态中,可以通过 setRequestHeader() 方法来设置请求的头部, 可以调用 send() 方法来发起请求。 |
2 | send() 方法已经被调用,响应头也已经被接收。 |
3 | 响应体部分正在被接收。如果 responseType 属性是“text”或空字符串, responseText 将会在载入的过程中拥有部分响应数据。 |
4 | 请求操作已经完成。这意味着数据传输已经彻底完成或失败。 |
onreadystatechange
看属性名就可知道,当readystate属性状态值变化时,xhr马上回调用onreadystatechange定义的回调函数。
(readystatechange其实是xhr的注册事件,onreadystatechange其实是对事件的响应)
xhr.onreadystatechange = function(){ if(xhr. readystate = 4){ /* do something */ } }
通过readystate状态值,可以对XMLHttpRequest的请求响应状态进行判断。但却无法判断服务器返回的响应报文中,HTTP的状态码(例如常见的,200成功,403服务器拒绝请求,404页面资源无法找到等)。这里XMLHttpRequest对象中用status属性来得到响应状态码的值。
status
返回了XMLHttpRequest响应中的数字状态码。status对应在服务器响应报文中标准的HTTP响应码。若在响应前或是XMLHttpRequest出错时,status的值为0
标签:blank 语言 href doc https asc 5.5 ble The
原文地址:https://www.cnblogs.com/jaykoo/p/10028009.html