XMLHTTP使用详解

XMLHTTP使用详解

分类: xmlhttp2013-07-31 13:02 64人阅读 评论(0) 收藏 编辑 删除

JavaScriptWebxmlhttp

XMLHTTP对象是MicrosoftMSXML开发包中带的一个用HTTP,XML协议访问web资源的对象MSXML3.0开始出现它在AJAX技术中主要用来从其他网络资源获取信息,然后由javascript来更新页面中的部分内容.

采用这种方法将页面可更新内容细化,不需要更新很少的内容而刷新整个页面.

 

XMLHTTP对象的使用方法如下:

1- 创建XMLHTTP对象,不同的浏览器创建方式不同,本文以IE为例说明.

2- XMLHTTP对象向外部资源发送请求信息同步或异步获得返回结果

3- 处理返回结果,在页面上显示,这时要用到javascript相关技术

 

XMLHTTP对象的方法如下: (函数原型采用VB语法)

 

Sub abort()

中断当前对象的HTTP请求.

 

 Function getAllResponseHeaders() As String

获取HTTP响应结果中的全部Header信息,以字符串格式表示

 

 Function getResponseHeader(bstrHeader As String) As String

 

获取HTTP响应结果Header中指定名称的值,用字符串表示,如果不存在则返回空串

 

Sub open(bstrMethod As String, bstrUrl As String, [varAsync], [bstrUser], [bstrPassword])

初始化HTTP连接请求对象,设置请求方法,地址,认证信息.

bstrMethod可用值有GET,POST,HEAD,定义向HTTP提交请求的方式;必填

bstrUrl为要访问的HTTP资源地址;必填

varAsync 可选项,设置是异步还是同步等待返回结果,true-异步方式,false-同步方式,缺省是异步方式;

如果HTTP请求要求用户名和口令,则在bstrUser,bstrPassword中设置.

 

 

Sub send ([varBody])

向服务器发送一个HTTP请求,并获取返回结果.

varBody为要发送到服务器的数据,通常在POST方式下使用.

 

Sub setRequestHeader(bstrHeader As String, bstrValue As String)

在请求header中设置bstrHeader/bstrValue值对并发送到服务器端.

:

xmlReq.setRequestHeader("Content-Type",

"application/x-www-form-urlencoded; charset=UTF-8");

 

 

 XMLHTTP属性

 

onreadystatechange

 

 设置请求对象状态readystate改变时要调用的函数对象;

 

readyState

 

请求对象的状态值,含义如下:

0 - 请求对象被创建,但未初始化,open方法未调用

1 - 装载中,open方法已调用,send方法未调用

2 - 已装载,send方法已调用,但还未获得Header信息

3 - 交互中,已获取了部分信息,这时调用responseText将得到不完整信息,会返回错误

4 - 所有数据已接收完成,可用responseTextresponseBody得到完整数据

 

 responseBody

 

表示从HTTP响应得到的返回原始信息,内容的编码方式决定于请求的服务器端(UTF-8, UCS-2, UCS-4, Shift_JIS)

 

responseText

 

 HTTP请求返回数据体的字符串表示,缺省情况下用utf-8编码后返回,如果返回内容中有中文,服务器端的数据必须用utf-8编码,否则就会出现乱码。

 

responseStream

 

HTTP请求返回数据的流对象,该对象实现IStream接口.

 

responseXML

 

返回XML格式的数据对象服务器端返回数据为XML格式数据时可用.服务器端用动态语言生成xml,必须设置content-typetext/xml,否则客户端得到的responseXML为空

 

status

 HTTP返回代码.

200 - 成功

404 - 错误请求

500 - 服务器内部错误,等等详见HTTP协议.

 

statusText

HTTP返回状态文本描述.

 

上面说明了XMLHTTP的方法和属性,下面列一些使用实例.

 

 

 例1  连接到google,显示获得的信息

 

 

<script language="javascript">

 

 

function getGoogle(){

    var xmlReq ;

    try{

        xmlReq = new ActiveXObject("Microsoft.XMLHTTP");

 

        var web = "http://www.google.com";

 

        //异步方式

        xmlReq.open("GET",web,true);

        xmlReq.onreadystatechange = function(){

              if (xmlReq.readystate == 4){

                      document.write(xmlReq.responseText);

              }

 

        }

 

        xmlReq.send();

 

    catch(e){

       

         alert(e);

    }

    

}

 

</script>

 

 

 例POST方法发送数据到web服务器

 

<script language="javascript" >

    var xmlReq ;

    function sendData(){

        

          try{

 

                    xmlReq = new ActiveXObject("MSXML2.XMLHTTP");

                    var data = "name=james&id=1234";

                    var web = "http://www.myweb.com/login.jsp"    //实际运行要换为存在的一个地址

                    xmlReq.open("POST",web,true);

                    xmlReq.onreadystatechange = resHandler;         //设置返回值处理函数

                    xmlReq.setRequestHeader("Content-Type","

           xmlReq.setRequestHeader("Content-Type",

"application/x-www-form-urlencoded; charset=UTF-8");

                    xmlReq.send(data);

 

          } catch(e) {

               alert(e);

          }

 

    }

 

 

    function ResHandler(){

           if (xmlReq.readystate == 4){

                

                  alert(xmlReq.responseText);

 

           }

    }

 

 

</script>

 

 

Mozilla浏览器中要用xmlReq = new XMLHttpRequest()来创建HTTP请求对象其他使用方法与MSXML相同。基于安全问题,如果open中访问的是另外的域,浏览器通常会禁止这种操作,要跨域访问需修改安全配置。

 

 

参考文档:

 

1 - http://msdn.microsoft.com  中MSXML SDK

2 - http://jibbering.com/2002/4/httprequest.html

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值