• XMLHTTP使用具体解释


    XMLHTTP对象是Microsoft的MSXML开发包中带的一个用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请求要求username和口令,则在bstrUser,bstrPassword中设置.
     
     
    Sub send ([varBody])
    向server发送一个HTTP请求,并获取返回结果.
    varBody为要发送到server的数据,通常在POST方式下使用.
     
    Sub setRequestHeader(bstrHeader As String, bstrValue As String)
    在请求header中设置bstrHeader/bstrValue值对并发送到server端.
    例:

    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 - 所有数据已接收完毕,可用responseText或responseBody得到完整数据

     responseBody

     

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

     

    responseText

     

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

     

    responseStream

     

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

     

    responseXML

     

    返回XML格式的数据对象. server端返回数据为XML格式数据时可用.server端用动态语言生成xml时,必须设置content-type为text/xml,否则client得到的responseXML为空

     

    status

     HTTP返回代码.
    200 - 成功
    404 - 错误请求
    500 - server内部错误,等等. 详见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>
     
     
     例2 用POST方法发送数据到webserver
     
    <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
     
     
     
     
     
  • 相关阅读:
    需求分析之“客户隐形需求”
    JAVA版的SqlHelper【自学jdbc3个晚上的总结】
    NHibernate封装代码
    一步步认识NHibernate的延迟加载
    设置RichTextbox行间距
    .NET不可不读的书籍
    程序员的纠结
    CSS图片下载器
    从此告别CSDN
    C语言I博客作业02
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4071406.html
Copyright © 2020-2023  润新知