zoukankan      html  css  js  c++  java
  • XmlHttp对象简介[转载]

    HttpRequest对象是最近两年炒得很“热”的AJAX的基础。使用XMLHTTP组件,开发人员可以不用从当前的Web页面导航而直接传输数据到服务器上或者从服务器取数据。这个功能是重要的,因为它帮助减少了无状态连接的痛苦。它还可以排除下载冗余HTML的需要,从而提高进程的速度。

    一、什么是HttpRequest对象

    • 背景

    HttpRequest对象是最近两年炒得很“热”的AJAX的基础。使用XMLHTTP组件,开发人员可以不用从当前的Web页面导航而直接传输数据到服务器上或者从服务器取数据。这个功能是重要的,因为它帮助减少了无状态连接的痛苦。它还可以排除下载冗余HTML的需要,从而提高进程的速度。

    Mozilla做出的回应是创建它自己的继承XML代理类:XMLHttpRequest类。对于大多数情况,XMLHttpRequest对象的行为很像XMLHTTP组件。这就意味着你可以使用很多与XMLHTTP组件相同的帮助信息。方法和属性类似,然而,所有的方法和属性都是以小写字母开头,并且还有一些属性不支持。

    HttpRequest对象能够直接在客户端VBScript或JavaScript程序代码发送HTTP请求,可以在客户端的网页直接执行基于WEB的应用程序,并且在客户端和服务器端应用程序使用HTTP发送数据。

    HttpRequest对象的版本是从2.0开始的,各版本的ProgID字符串不一样,目前是6.0。

    • 建立HttpRequest的代码是:
    // 对于IE浏览器
    var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
    //对于非IE浏览器
    var xmlHttp = new XMLHttpRequest();
    • HttpRequest对象有以下属性:

    属性 说明
    readyState 只读属性,目前状态的长整数,值4表示请求处理完成
    responseBody 只读属性,获取服务器的响应,返回非符号的字节数组
    responseSteam 返回数据流对象
    responseText 只读属性,获取服务器的响应,返回字符串
    responseXML 只读属性,获取服务器的响应,返回XML DOM对象
    status 只读属性,获取HTTP状态码,例如200、302等
    statusText 获取HTTP状态信息字符串,例如OK
    onreadystatechange 读写属性,执行readyState属性改变的事件处理,设定处理程序

    • HttpRequest对象有以下方法:

    方法 说明
    abort()  取消当前的HTTP请求
    getAllResponseHeaders() 获取全部HTTP标头的内容
    getResponseHeader(HeaderName) 获取全部HTTP标头名称的内容
    send() 发送HTTP请求到服务器
    setRequestHeader(HeaderName,value) 用户自定义的HTTP标头数据

    二、HttpRequest对象获取和发送XML

    XMLHTTP 用于通过 HTTP 请求来发送或接受 XML 信息。实际上 XMLHTTP 还有其他的很多用途。可以用它来向服务器发送命令(可用 XML, string, stream, 或 unsigned array)。命令也可以作为 URL 的参数还可以向客户端发送结果信息( XML, string, stream, 或 unsigned array)

    在客户端使用XMLHTTP很简单,只有5步:

    1. 创建 XMLHTTP 对象。
    2. 指定方法,URL,以及验证,用open()方法对服务器打开XMLHTTP。打开方法可以是POSTGET
    3. 使用send()方法,向服务器发送request 信息。
    4. 等待,直到从服务器接受到结果。
    5. 释放 XMLHTTP 对象。

    三、读取和设定Http前缀内容

    HttpRequest对象能够新增用户自定义的HTTP标头名称和内容,使用的是setRequestHeader方法。响应程序代码如下:

    <%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
    <%
    //不存储在客户端缓冲
    Response.Expires = 0;
    //返回用户自定义的标头数据;
    Response.Write(Request.ServerVariables("HTTP_nickname"));
    %>

    点击查看实例效果。

    四、readyState属性

    如果主从架构的应用程序需要异步方式提出HTTP请求,onreadystatechange属性能够设定服务器响应后的处理程序,而不影响客户端程序的运行。

    下面的例子演示当XMLHTTPRequest对象的readyState属性改变时调用HandleStateChange函数,当数据接收完毕后(readystate == 4),此页面上的将显示欢迎信息。响应程序代码如下:

    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.IO" %>
    <%@ Import Namespace="System.Xml" %>
    <script runat="server">
    private void Page_Load(object sender, System.EventArgs e) 
    {
    	Stream inStream=Request.InputStream;
    	if (inStream.Length > 0)
    	{
    		XmlReader reader = XmlReader.Create(Request.InputStream);
    		reader.ReadToFollowing("student");
    		string name = reader.GetAttribute("name");
    		reader.Close();
                Response.Write("你好,"+name);
    	}
    }
    </script>

    点击查看实例效果。

    五、onreadystatechange属性

    说明
    0(未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)
    1 (初始化) 对象已建立,尚未调用send方法
    2 (发送数据) send方法已调用,但是当前的状态及http头未知
    3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误
    4 (完成)(HeaderName,value) 数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据

  • 相关阅读:
    jenkins与gitlab集成,分支提交代码后自动构建任务(六)
    MySQL配置参数sync_binlog说明
    jenkins部署java项目(五)
    Mac OS X 中安装JDK 7
    centos 使用pip安装mysql-python
    CentOS6.4下安装TeamViewer8
    adb & adb shell 相关命令
    mac下限速
    mac 下 word 2011 使用笔记
    python twisted启动定时服务
  • 原文地址:https://www.cnblogs.com/ddlzq/p/1609919.html
Copyright © 2011-2022 走看看