AJAX你们已经都知道了,XMLHttpRequest对象则是AJAX的核心。这篇博客重点总结一下这个对象的使用。javascript
XMLHttpRequest对象的属性和方法:java
属性ajax |
说明json |
readyState浏览器 |
表示XMLHttpRequest对象的状态:0:未初始化。对象已建立,未调用open;服务器 1:open方法成功调用,但Sendf方法未调用;app 2:send方法已经调用,还没有开始接受数据;异步 3:正在接受数据。Http响应头信息已经接受,但还没有接收完成;async 4:完成,即响应数据接受完成。函数 |
Onreadystatechange |
请求状态改变的事件触发器(readyState变化时会调用这个属性上注册的javascript函数)。 |
responseText |
服务器响应的文本内容 |
responseXML |
服务器响应的XML内容对应的DOM对象 |
Status |
服务器返回的http状态码。200表示“成功”,404表示“未找到”,500表示“服务器内部错误”等。 |
statusText |
服务器返回状态的文本信息。 |
方法 |
说明 |
Open(string method,string url,boolean asynch, String username,string password) |
指定和服务器端交互的HTTP方法,URL地址,即其余请求信息; Method:表示http请求方法,通常使用"GET","POST". url:表示请求的服务器的地址; asynch:表示是否采用异步方法,true为异步,false为同步; 后边两个能够不指定,username和password分别表示用户名和密码,提供http认证机制须要的用户名和密码。 |
Send(content) |
向服务器发出请求,若是采用异步方式,该方法会当即返回。 content能够指定为null表示不发送数据,其内容能够是DOM对象,输入流或字符串。 |
SetRequestHeader(String header,String Value) |
设置HTTP请求中的指定头部header的值为value. 此方法需在open方法之后调用,通常在post方式中使用。 |
getAllResponseHeaders() |
返回包含Http的全部响应头信息,其中相应头包括Content-length,date,uri等内容。 返回值是一个字符串,包含全部头信息,其中每一个键名和键值用冒号分开,每一组键之间用CR和LF(回车加换行符)来分隔! |
getResponseHeader(String header) |
返回HTTP响应头中指定的键名header对应的值 |
Abort() |
中止当前http请求。对应的XMLHttpRequest对象会复位到未初始化的状态。
|
IE8/IE九、Opera Mini 彻底不支持xhr
对象
IE10/IE11部分支持,不支持 xhr.responseType
为json
部分浏览器不支持设置请求超时,即没法使用xhr.timeout
部分浏览器不支持xhr.responseType
为blob
1 function ajax(url,postData,fnSuc){ 2 var xhr; 3 if(window.XMLHttpRequest){ 4 xhr= new XMLHttpRequest(); 5 //console.log(xhr); 6 }else{ 7 // alert("不存在"); 8 xhr= new ActiveXObject("Microsoft.XMLHTTP"); 9 //alert(xhr); 10 }//XMLHttpRequest兼容性处理 11 xhr.open("POST", url , true);//指定请求的方式post/get,url,true/false(异步/同步) 12 xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 13 xhr.onreadystatechange = function(){//请求状态改变时触发 14 var XMLHttpReq = xhr; 15 if (XMLHttpReq.readyState == 4) {//数据接受完成 16 if (XMLHttpReq.status == 200) {//服务器返回的http状态码,200表示成功 17 var text = XMLHttpReq.responseText;//服务器响应的文本内容 18 fnSuc(JSON.parse(text));//请求成功时返回的数据 19 } 20 } 21 }; 22 postData = (function(obj){ // 转成post须要的字符串 23 var str = ""; 24 for(var prop in obj){ 25 str += prop + "=" + obj[prop] + "&" 26 } 27 return str; 28 })(postData); 29 xhr.send(postData);//向服务器发送请求 30 }
这是XMLHttpRequest简单的应用,使用时直接调用就好了,使用的是post请求能够传参,返回的是json数据便于处理,固然有其余需求能够根据状况添加。