`

Ajax 基础知识1

    博客分类:
  • Ajax
阅读更多
提供客户端同http服务器通讯的协议

Dim HttpReq As New MSXML2.XMLHTTP30
HttpReq.open "GET", "http://localhost/books.xml", False
HttpReq.send
MsgBox HttpReq.responseText

备注
客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft® XML Document Object Model (DOM)处理回应。

XMLHttpRequest成员
属性

onreadystatechange 指定当readyState属性改变时的事件处理句柄。只写
readyState  返回当前请求的状态,只读.
responseBody  将回应信息正文以unsigned byte数组形式返回.只读
responseStream 以Ado Stream对象的形式返回响应信息。只读
responseText 将响应信息作为字符串返回.只读
responseXML 将响应信息格式化为Xml Document对象并返回,只读
status 返回当前请求的http状态码.只读
statusText  返回当前请求的响应行状态,只读


* 表示此属性是W3C文档对象模型的扩展.

方法

abort 取消当前请求
getAllResponseHeaders 获取响应的所有http头
getResponseHeader 从响应信息中获取指定的http头
open 创建一个新的http请求,并指定此请求的方法、URL以及验证信息(用户名/密码)
send 发送请求到http服务器并接收回应
setRequestHeader 单独指定请求的某个http头


onreadystatechange
指定当readyState属性改变时的事件处理句柄

语法
oXMLHttpRequest.onreadystatechange = funcMyHandler;

如下的例子演示当XMLHTTPRequest对象的readyState属性改变时调用HandleStateChange函数,当数据接收完毕后(readystate == 4)此页面上的一个按钮将被激活

var xmlhttp=null;
function PostOrder(xmldoc)
{
   var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.5.0");
   xmlhttp.Open("POST", "http://myserver/orders/processorder.asp", false);  
   xmlhttp.onreadystatechange= HandleStateChange;
   xmlhttp.Send(xmldoc);
   myButton.disabled = true;
}
function HandleStateChange()
{
   if (xmlhttp.readyState == 4)
   {
     myButton.disabled = false;
     alert("Result = " + xmlhttp.responseXML.xml);
   }
}

备注
此属性只写,为W3C文档对象模型的扩展.

readyState
返回XMLHTTP请求的当前状态

语法
lValue = oXMLHttpRequest.readyState;

var XmlHttp;
XmlHttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");

function send() {
    XmlHttp.onreadystatechange = doHttpReadyStateChange;
    XmlHttp.open("GET", "http://localhost/sample.xml", true);
    XmlHttp.send();
}

function doHttpReadyStateChange() {
    if (XmlHttp.readyState == 4) {
       alert("Done");
    }
}

备注
变量,此属性只读,状态用长度为4的整型表示.定义如下:


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


responseBody
返回某一格式的服务器响应数据

语法
strValue = oXMLHttpRequest.responseBody;

var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET", "http://localhost/books.xml", false);
xmlhttp.send();
alert(xmlhttp.responseBody);

备注
变量,此属性只读,以unsigned array格式表示直接从服务器返回的未经解码的二进制数据。

responseStream
以Ado Stream对象的形式返回响应信息

语法
strValue = oXMLHttpRequest.responseStream;

备注
变量,此属性只读,以Ado Stream对象的形式返回响应信息。

responseText
将响应信息作为字符串返回

语法
strValue = oXMLHttpRequest.responseText;

var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET", "http://localhost/books.xml", false);
xmlhttp.send();
alert(xmlhttp.responseText);

备注
变量,此属性只读,将响应信息作为字符串返回。
XMLHTTP尝试将响应信息解码为Unicode字符串,XMLHTTP默认将响应数据的编码定为UTF-8,如果服务器返回的数据带BOM(byte-order mark),XMLHTTP可以解码任何UCS-2 (big or little endian)或者UCS-4 数据。注意,如果服务器返回的是xml文档,此属性并不处理xml文档中的编码声明。你需要使用responseXML来处理。

responseXML
将响应信息格式化为Xml Document对象并返回

语法
var objDispatch = oXMLHttpRequest.responseXML;

var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET", "http://localhost/books.xml", false);
xmlhttp.send();
alert(xmlhttp.responseXML.xml);

备注
变量,此属性只读,将响应信息格式化为Xml Document对象并返回。如果响应数据不是有效的XML文档,此属性本身不返回XMLDOMParseError,可以通过处理过的DOMDocument对象获取错误信息。

status
返回当前请求的http状态码

语法
lValue = oXMLHttpRequest.status;

var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET", "http://localhost/books.xml", false);
xmlhttp.send();
alert(xmlhttp.status);

返回值
长整形标准http状态码,定义如下:

Number  Description 
100
Continue

101
Switching protocols

200
OK

201
Created

202
Accepted

203
Non-Authoritative Information

204
No Content

205
Reset Content

206
Partial Content

300
Multiple Choices

301
Moved Permanently

302
Found

303
See Other

304
Not Modified

305
Use Proxy

307
Temporary Redirect

400
Bad Request

401
Unauthorized

402
Payment Required

403
Forbidden

404
Not Found

405
Method Not Allowed

406
Not Acceptable

407
Proxy Authentication Required

408
Request Timeout

409
Conflict

410
Gone

411
Length Required

412
Precondition Failed

413
Request Entity Too Large

414
Request-URI Too Long

415
Unsupported Media Type

416
Requested Range Not Suitable

417
Expectation Failed

500
Internal Server Error

501
Not Implemented

502
Bad Gateway

503
Service Unavailable

504
Gateway Timeout

505
HTTP Version Not Supported



备注
长整形,此属性只读,返回当前请求的http状态码,此属性仅当数据发送并接收完毕后才可获取。

statusText
返回当前请求的响应行状态

语法
strValue = oXMLHttpRequest.statusText;

var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET", "http://localhost/books.xml", false);
xmlhttp.send();
alert(xmlhttp.statusText);

备注
字符串,此属性只读,以BSTR返回当前请求的响应行状态,此属性仅当数据发送并接收完毕后才可获取。

abort
取消当前请求

语法
oXMLHttpRequest.abort();

备注
调用此方法后,当前请求返回UNINITIALIZED 状态。

getAllResponseHeaders
获取响应的所有http头

语法
strValue = oXMLHttpRequest.getAllResponseHeaders();

var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET", "http://localhost/sample.xml", false);
xmlhttp.send();
alert(xmlhttp.getAllResponseHeaders());

输出由web服务器返回的http头信息:

Server:Microsoft-IIS/5.1
X-Powered-By:ASP.NET
Date:Sat, 07 Jun 2003 23:23:06 GMT
Content-Type:text/xml
Accept-Ranges:bytes
Last Modified:Sat, 06 Jun 2003 17:19:04 GMT
ETag:"a0e2eeba4f2cc31:97f"
Content-Length:9

备注
每个http头名称和值用冒号分割,并以\r\n结束。当send方法完成后才可调用该方法。

getResponseHeader
从响应信息中获取指定的http头

语法
strValue = oXMLHttpRequest.getResponseHeader(bstrHeader);

var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.3.0");
xmlhttp.open("GET", "http://localhost/sample.xml", false);
xmlhttp.send();
alert(xmlhttp.getResponseHeader("Server"));

输出http头中的server列:当前web服务器的版本及名称。

备注
当send方法成功后才可调用该方法。如果服务器返回的文档类型为"text/xml", 则这句话xmlhttp.getResponseHeader("Content-Type");将返回字符串"text/xml"。可以使用getAllResponseHeaders方法获取完整的http头信息。

open
创建一个新的http请求,并指定此请求的方法、URL以及验证信息

语法
oXMLHttpRequest.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);

参数
bstrMethod
http方法,例如:POST、GET、PUT及PROPFIND。大小写不敏感。

bstrUrl
请求的URL地址,可以为绝对地址也可以为相对地址。

varAsync[可选]
布尔型,指定此请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。

bstrUser[可选]
如果服务器需要验证,此处指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。

bstrPassword[可选]
验证信息中的密码部分,如果用户名为空,则此值将被忽略。

下面的例子演示从服务器请求book.xml,并显示其中的book字段。

var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET","http://localhost/books.xml", false);
xmlhttp.send();
var book = xmlhttp.responseXML.selectSingleNode("//book[@id='bk101']");
alert(book.xml);

备注
调用此方法后,可以调用send方法向服务器发送数据。

send
发送请求到http服务器并接收回应

语法
oXMLHttpRequest.send(varBody);

参数
varBody
欲通过此请求发送的数据。

xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET", "http://localhost/sample.xml", false);
xmlhttp.send();
alert(xmlhttp.responseXML.xml);

备注
此方法的同步或异步方式取决于open方法中的bAsync参数,如果bAsync == False,此方法将会等待请求完成或者超时时才会返回,如果bAsync == True,此方法将立即返回。

This method takes one optional parameter, which is the requestBody to use. The acceptable VARIANT input types are BSTR, SAFEARRAY of UI1 (unsigned bytes), IDispatch to an XML Document Object Model (DOM) object, and IStream *. You can use only chunked encoding (for sending) when sending IStream * input types. The component automatically sets the Content-Length header for all but IStream * input types.

如果发送的数据为BSTR,则回应被编码为utf-8, 必须在适当位置设置一个包含charset的文档类型头。

If the input type is a SAFEARRAY of UI1, the response is sent as is without additional encoding. The caller must set a Content-Type header with the appropriate content type.

如果发送的数据为XML DOM object,则回应将被编码为在xml文档中声明的编码,如果在xml文档中没有声明编码,则使用默认的UTF-8。

If the input type is an IStream *, the response is sent as is without additional encoding. The caller must set a Content-Type header with the appropriate content type.

setRequestHeader
单独指定请求的某个http头

语法
oXMLHttpRequest.setRequestHeader(bstrHeader, bstrValue);

参数
bstrHeader
字符串,头名称。

bstrValue
字符串,值。


备注
如果已经存在已此名称命名的http头,则覆盖之。此方法必须在open方法后调用。
分享到:
评论

相关推荐

    ajax基础知识总结

    学习ajax基础知识,让自己的前端技术更上一层,学会与后台交互

    学习AJAX基础知识

    ### 学习AJAX基础知识:理解现代Web应用的基石 #### AJAX:重新定义Web应用的交互体验 在探讨AJAX的基础知识之前,我们先要理解它为何能够在过去十几年间成为Web开发领域的一颗璀璨明星。AJAX,全称为Asynchronous...

    ajax (部分案例使用jquery)实例集锦

    一、Ajax基础知识 1. 创建Ajax对象:在JavaScript中,通常使用XMLHttpRequest对象来创建Ajax请求。创建一个新对象并设置其属性,如`open()`方法指定请求类型、URL和是否异步,`send()`方法发送请求。 2. 事件监听:...

    AJAX最基础的知识

    ajaxjichu,ajax基础1

    Ajax 基础知识点汇总(代码+知识点+xmind思维导图)

    **Ajax基础** 1. **创建Ajax对象**: 在JavaScript中,通常使用`XMLHttpRequest`对象来创建Ajax请求。例如: ```javascript var xhr = new XMLHttpRequest(); ``` 2. **打开连接**: 初始化请求,设置请求的URL、...

    Ajax实例和实现

    ### 一、Ajax基础知识 1. **异步通信**:Ajax的最大特点就是异步,意味着用户可以继续浏览网页,而后台则在处理请求并获取数据。 2. **XMLHttpRequest对象**:它是Ajax的核心,用于创建与服务器的连接,并发送HTTP...

    ajax 基础

    以下是对Ajax基础知识的详细阐述: 1. **工作原理** - Ajax 的核心是 XMLHttpRequest 对象,它允许JavaScript在后台与服务器通信,而不会打断用户的交互。 - 一个典型的Ajax流程包括创建XMLHttpRequest对象、打开...

    AJAX基础理论知识

    【AJAX基础理论知识】 AJAX,全称为异步JavaScript和XML,是一种在2005年由Google推动的网络开发技术,它不是一种新的编程语言,而是利用现有的Web标准来创建更加高效、互动的Web应用程序。通过AJAX,开发者可以在...

    ajax从入门到精通

    ### 一、Ajax基础知识 1. **异步通信**: Ajax的核心特性就是异步,这意味着用户可以在等待后台处理数据的同时继续浏览网页,提高了用户体验。 2. **JavaScript**: Ajax依赖JavaScript实现,通过创建XMLHttpRequest...

    AJAX IN ACTION(英文带书签清晰原版)

    ### 一、AJAX基础知识 1. **基本概念**:AJAX的核心是JavaScript对象XMLHttpRequest,它允许在后台与服务器进行通信,从而实现了页面的无刷新更新。 2. **工作原理**:AJAX通过创建XMLHttpRequest对象,发送HTTP...

    Ajax与PHP WEB开发.rar

    一、Ajax基础知识 1. **异步通信**:Ajax的核心是JavaScript的XMLHttpRequest对象,它实现了浏览器与服务器间的异步通信,用户在等待响应时仍能继续浏览页面其他部分。 2. **数据交换格式**:尽管名称中有XML,但...

    Ajax基础知识介绍

    Ajax的概念是asynchronous javascript and xml的简写。 不是一项具体的技术,而是几门技术的综合应用。 其核心只不过是要在javascript中调用一个XMLHttpRequest的javascript类,这个类可以与Web服务器使用HTTP协议...

    ajax的基本知识

    早在1998年,Microsoft的Outlook Web Access就使用了一种类似AJAX的技术,即XMLHTTP,这为后续AJAX的发展奠定了基础。随着互联网技术的进步,如Mozilla/Gecko浏览器对AJAX的支持,AJAX逐渐成为一种标准的Web开发技术...

    ajax的基础知识.pdf

    ### Ajax的基础知识详解 #### 一、Ajax的概念与历史 Ajax,全称为Asynchronous JavaScript and XML(异步JavaScript和XML),是一种网页应用技术,自2005年起引起了广泛的关注。这一技术允许网页在不重新加载整个...

    McGraw Hill Osborne Media AJAX A Beginners Guide Sep 2008

    #### 四、AJAX基础知识 1. **概念解释**:AJAX并非一种单一的技术,而是一系列技术的组合,主要包括JavaScript、XMLHttpRequest对象、CSS和DOM。 - **JavaScript**:负责处理客户端逻辑。 - **XMLHttpRequest**:...

    ajax基础教程 ajax入门知识

    在本文中,我们将探讨AJAX的基础知识,包括jQuery中的`.load()`, `.get()`, 和 `.post()`方法。 1. **`.load()`方法**: - `.load()`方法用于从服务器上拉取数据,并将其插入到DOM元素中。它采用GET方式发送请求。...

    ajax基础知识

    Ajax.ppt可能是一个关于Ajax的PPT教程,包含了更详细的理论知识和案例分析,可以深入学习Ajax的使用和最佳实践。 总的来说,Ajax是现代Web开发中不可或缺的一部分,它极大地提升了用户体验,使得交互更加智能和高效...

    14ajax课程_AJAX基础_

    本教程将深入探讨AJAX的基础知识,帮助你理解其工作原理,并掌握如何在实际项目中应用。 ### 1. AJAX概述 AJAX并非一种单独的技术,而是一组技术的集合,包括JavaScript、XMLHttpRequest对象、DOM以及CSS等。其...

Global site tag (gtag.js) - Google Analytics