IE5是第一款引入XHR对象的浏览器。在IE5678是通过MSXML库里的一个ActiveXObject对象实现的。其他新的浏览器可直接创建XMLHttpRequest对象
下面一个兼容创建xhr方法
1 function createXHR(){ 2 if (typeof XMLHttpRequest != "undefined"){ 3 return new XMLHttpRequest(); 4 } else if (typeof ActiveXObject != "undefined"){ 5 if (typeof arguments.callee.activeXString != "string"){ 6 var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", 7 "MSXML2.XMLHttp"], 8 i, len; 9 10 for (i=0,len=versions.length; i < len; i++){ 11 try { 12 new ActiveXObject(versions[i]); 13 arguments.callee.activeXString = versions[i]; 14 break; 15 } catch (ex){ 16 //skip 17 } 18 } 19 } 20 21 return new ActiveXObject(arguments.callee.activeXString); 22 } else { 23 throw new Error("No XHR object available."); 24 } 25 }
1 //创建XHR对象 2 var xhr = createXHR();
3 //打开请求 4 xhr.open("get", "example.txt", false); //只能向同一域中 使用相同端口和协议的URL发送请求。否则可能引发安全错误
5 //发送请求 6 xhr.send(null); //send()方法接受一个参数,即请求主体发送的数据,没数据必须传入null 7 8 if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304){ 9 alert(xhr.statusText); 10 alert(xhr.responseText); 11 } else { 12 alert("Request was unsuccessful: " + xhr.status); 13 }
xhr.resonseText:响应主体被返回的文本
xhr.status:响应的HTTP状态 。一般将状态码为200作为成功标识;状态码为304标识请求的资源没有被修改,可以直接使用缓存
xhr.statusText:响应的HTTP状态说明