XMLHttpRequest的简单认识和原始JS建立该对象方法
来源:互联网 发布:阿里云 ecs 高级教程 编辑:程序博客网 时间:2024/06/08 13:35
在进行前端开发时经常使用到 ajax 进行异步请求获取数据,那么进行 ajax 请求最关键的一步是建立 XMLHttpRequest 对象,然后在利用该对象进行数据异步请求操作,那么现在这里就简单了解一下这个关键的 XMLHttpRequest对象 [更多可以 baidu/google搜索查看更多],
ajax 异步请求,可以在Client端用JS建立,也可以在Server端用ASP,JSP等建立;所以异步请求是面向整个系统和所有程序的,XMLHttpRequest 对象建立是基于系统底层的以 .DLL 文件存在的 COM 组件,新版本的 COM 组件(DLL)中,一般都包含了过去的版本(向下兼容),新版本的 COM 组件 BUG 更少,性能更好,所以优先使用新版本 COM 组件来建立 XMLHttpRequest 对象,DLL文件的在 Window 系统中存在的位置(根据操作系统安装的位置不同和不同版本系统可能有变)见
C:\WINDOWS\system32\msxml.dll //可能还有 msxml2.dll,msxml3.dll,msxml4.dll
C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSXML5.DLL //可能还有 MSXML6.DLL
更多各版本DLL文件的位置和其对应的 ProgID,GUID,TypeLib,VersionIndependentProgID信息见后面附加信息
好了废话不多, 看看常用的;
1,XMLHttpRequest对象的属性
[1], onreadystatechange //只写, 指定readyState变化时的处理函数,即回调函数,必在send方法前设定
[2], readyState //只读, 返回当前请求状态,有 0--4 五种状态
[3], responseBody //只读, 响应信息正文以unsign byte数组形式返回
[4], responseStream //只读, 以Ado Stream 对象的形式返回响应信息
[5], responseText //只读, 响应信息以字符串形式返回, 默认数据编码为 UTF-8
[6], responseXML //只读, 响应信息以格式化 XML Document对象返回
[7], status //只读, 返回当前请求的Http状态码,有多种状态
[8], statusText //只读, 返回当前请求的响应状态行
(1), 其中 readyState 的值为 0 --4 共5种状态,分别表示如下:
-----------------------------------------------------------------------------------
状态值 ---- 含义 ---- 描述
-----------------------------------------------------------------------------------
0,请求未初始化,请求对象已经建立,但是还没有初始化,即尚未调用 open() 方法创建 Http 请求
1,请求已经建立,请求对象已经建立,但是还没有调用 send() 方法发送 Http 请求
2,请求已经发送,Send() 方法已经调用,但是当前状态以及 Http 头未知
3,请求处理中,响应中已有部分数据可用了,但是服务器和没有完成响应的生成
4,响应已经完成,数据接受完毕,此时可以用 response 的系列方法获取完整的回应数据
(2), status 属性代表当前 Http 请求的状态:
-----------------------------------------------------------------------------------
状态值 -------- 说明
-----------------------------------------------------------------------------------
100,客户必须发出请求
101,客户要求服务器根据请求转换 HTTP 协议版本
2XX,成功请求相关
200,交易成功
201,提示知道新文件的URL
....
3XX,重定向相关
300,请求的资源可在多处得到
301,删除请求数据
....
4XX,客户机中出现的错误相关
400,错误请求,如请求中包含语法错误
404,没有发现文件,查询或URI
...
5XX,服务器中出现的错误相关
500,服务器产生内部错误
501,服务器不支持请求的函数
....
//更多的 Http 请求状态, 可以baidu/google搜索: http请求状态值
2,XMLHttpRequest对象的方法
[1], abort //停止当前请求; abort()
[2], getAllResponseHeaders //获取所有Http头, 以键/值对返回;含 Content-Length,Date,URL
[3], getResponseHeader //从响应中获取指定Http头;getResponseHeader(string header)
[4], open //创建新的Http请求; 多以open(method,URL,ture) 或open(method,URL,ture, username,pwd) 形式建立
[5], send //发送请求到Http服务器并接受回应;send(content)
[6], setRequestHeader //单独指定某个Http头;setRequestHeader(string header, string value)
3, JS 建立 XMLHttpRequest 对象
function createXMLHttpRequst(){//FUNCTION: create XMLHttpRequest object for Ajaxvar objXMLHttpRequest;if(window.ActiveXObject){//MS IEvar activeXNameList=new Array("Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"); for(var h=0;h<activeXNameList.length;h++){try{ objXMLHttpRequest=new ActiveXObject(activeXNameList[h]);}catch(e){ continue;}if(objXMLHttpRequest) break;}}else if(window.XMLHttpRequest){ //NOT MS IEobjXMLHttpRequest=new XMLHttpRequest();if (objXMLHttp.overrideMimeType){//针对某些特定版本的mozillar浏览器的BUG进行修正objXMLHttp.overrideMimeType("text/xml");}}if(!objXMLHttpRequest){objXMLHttpRequest=false;alert("无法建立 Ajax 请求的 XMLHttpRequest 对象,你的浏览器版本太低,建议升级你的浏览器.");//window.location.href="ajaxError.htm";}return objXMLHttpRequest;}
4, 一个用 JS 进行 AJAX 异步请求的例子
var objXMLHttpReq; //全局变量定义objXMLHttpReq=createXMLHttpRequst(); //建立AJAX请求对象function AjaxRequest(xURL){var qURL,xMethod,asynchFlag; //变量定义qURL=xURL; //请求的urlxMethod="GET"; //请求方式asynchFlag=true; //是否异步,默认true异步,false同步if(objXMLHttpReq){ objXMLHttpReq.open(xMethod,qURL+ "?" + escape(new Date()),asynchFlag); //URL后加个时间戳防止缓存objXMLHttpReq.onreadystatechange=CallbackFunctionName; //指定返回处理函数名称 objXMLHttpReq.send(null); //xmlhttp.send("param1=value1¶m2=value2&..."); //仅用于POST方法}}function CallbackFunctionName(){ //定义回调处理函数if(objXMLHttpReq.readyState==4){if(objXMLHttpReq.status==200){var x=objXMLHttpReq.responseText;//var x=objXMLHttpReq.responseXML;//...处理过程...}}}
附加信息:
Window系统中各版本DLL文件的位置和其对应的 ProgID,GUID,TypeLib,VersionIndependentProgID 信息
注意:根据操作系统安装的位置不同和不同版本系统可能有变,下面是系统安装在C盘下的window系统情况
ProgID=Microsoft.XMLHTTP.1.0
GUID={ED8C108E-4349-11D2-91A4-00C04F7969E8}
TypeLib={D63E0CE2-A0A2-11D0-9C02-00C04FC99C8E}
VersionIndependentProgID=Microsoft.XMLHTTP
位于C:\WINDOWS\system32\msxml.dll
ProgID=Msxml2.XMLHTTP.2.6
GUID={f5078f1e-c551-11d3-89b9-0000f81fe221}
TypeLib={f5078f18-c551-11d3-89b9-0000f81fe221}
VersionIndependentProgID=Msxml2.XMLHTTP
位于C:\WINDOWS\system32\msxml2.dll
ProgID=Msxml2.XMLHTTP.3.0
GUID={F5078F35-C551-11D3-89B9-0000F81FE221}
TypeLib={F5078F18-C551-11D3-89B9-0000F81FE221}
VersionIndependentProgID=Msxml2.XMLHTTP
位于C:\WINDOWS\system32\msxml3.dll
ProgID=Msxml2.ServerXMLHTTP.3.0
GUID={AFB40FFD-B609-40A3-9828-F88BBE11E4E3}
TypeLib={F5078F18-C551-11D3-89B9-0000F81FE221}
VersionIndependentProgID=Msxml2.ServerXMLHTTP
位于C:\WINDOWS\system32\msxml3.dll
ProgID=Msxml2.XMLHTTP.4.0
GUID={88D969C5-F192-11D4-A65F-0040963251E5}
TypeLib={F5078F18-C551-11D3-89B9-0000F81FE221}
没有VersionIndependentProgID
位于C:\WINDOWS\system32\msxml4.dll
ProgID=Msxml2.ServerXMLHTTP.4.0
GUID={88D969C6-F192-11D4-A65F-0040963251E5}
TypeLib={F5078F18-C551-11D3-89B9-0000F81FE221}
没有VersionIndependentProgID
位于C:\WINDOWS\system32\msxml4.dll
ProgID=Msxml2.XMLHTTP.5.0
GUID={88D969EA-F192-11D4-A65F-0040963251E5}
TypeLib={F5078F18-C551-11D3-89B9-0000F81FE221}
没有VersionIndependentProgID
位于C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSXML5.DLL
ProgID=Msxml2.ServerXMLHTTP.5.0
GUID={88D969EB-F192-11D4-A65F-0040963251E5}
TypeLib={F5078F18-C551-11D3-89B9-0000F81FE221}
没有VersionIndependentProgID
位于C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSXML5.DLL
ProgID=Msxml2.XMLHTTP.6.0
GUID=还没查到
TypeLib=还没查到
没有VersionIndependentProgID
位置还没查到
- XMLHttpRequest的简单认识和原始JS建立该对象方法
- js建立XMLHttpRequest对象及其属性和方法
- 原始ajax通过xmlHttpRequest对象的send()方法提交数据--Get方式和Post方式
- js的XMLHttpRequest对象和DOM对象
- XMLHttpRequest对象的方法和属性
- XMLHttpRequest对象的属性和方法
- XMLHttpRequest对象的属性和方法
- XMLHttpRequest对象的属性和方法
- XMLHttpRequest对象的属性和方法
- XMLHttpRequest 对象的几个方法和属性
- XMLHttpRequest对象的属性和方法
- XMLHttpRequest对象的属性和方法
- XMLHttpRequest对象的属性和方法
- XMLHttpRequest对象的属性和方法
- XMLHttpRequest对象的方法和属性
- XMLHttpRequest对象的属性和方法
- XmlHttpRequest对象的方法
- xmlHttpRequest对象的方法
- 内核
- 1624. Cryptoquote
- 几款HID SmartID NFC门禁读卡器
- 电容器与水桶的类比
- XML学习之Dom方式解析XML文件
- XMLHttpRequest的简单认识和原始JS建立该对象方法
- SRTP
- 域名解析原理
- C#贪吃蛇
- jstat 详解
- 如何在Web上判断是否已经安装了某个ActiveX控件
- oracle 管理 之 数据恢复 之闪回
- 如何解决:Android中 Error generating final archive: Debug Certificate expired on 10/09/18 16:30 的错误
- XML学习之SAX解析XML文件