前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XMLHTTP使用具体解释

XMLHTTP使用具体解释

作者头像
全栈程序员站长
发布2022-07-13 18:31:58
8500
发布2022-07-13 18:31:58
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

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

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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118118.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年12月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档