asp ajax xmlhttp,服务器XMLHTTP(Server XMLHTTP in ASP)基础知识

服务器XMLHTTP(Server XMLHTTP in ASP)基础知识

更新时间:2010年08月04日 13:05:02   作者:

几年很流行 Ajax,而 Ajax 的本质就是 XMLHttpRequest,是客户端 XMLHttpRequest 对象的使用。

相对于 Ajax,服务端 XMLHTTP 就是在服务端使用 XMLHttpRequest 对象了。虽然说,在服务端使用异步请求是比较不方便的,但是做为可以服务端发送 HTTP 请求的组件,学习一下也是没有坏处的。

这里,我讲的是在 ASP 环境中使用服务端 XMLHttpRequest,并以 JScript 做为演示代码的语言,因此,你需要了解 ASP 以及 JScript。

服务端 XMLHTTP,通常会用在获取远程主机的网页或者其他内容,新闻聚合系统一般就是使用服务端 XMLHTTP 对象来获取要聚合的 Feed 的内容,然后使用 XMLDOM 对象来分析 Feed 的内容,取出新闻的标题、作者、内容等信息,再存在数据库中,然后将若干个数据源的新闻一起显示在一起。抓虾就是这样一个新闻聚合器,但是它不是用 ASP 写的就是了 :)

在 ASP 中,我们可以用以下代码来创建一个 ServerXMLHTTP 对象,而这个对象,就是我们在服务端进行一切操作的基础。

var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.5.0");

首先来了解一下 ServerXMLHTTP 对象有哪些比较有用的方法:

1. abort 这个方法用于取消 XMLHTTP 的请求。如果 XMLHTTP 对象以异步方式发送请求,如果到达一定的时间请求仍然没有返回,就可以使用这个方法来取消请求。

2. getAllResponseHeaders 这个方法的返回值是一个字符串,相当于 HTTP 请求的头部去掉了请求方法、URI和协议版本信息。

3. getResponseHeader 这个方法用来获取指定头部信息,比较有用的就是可以用来获取返回数据的 Content-Type、Referer 等。

4. open 使用指定的请求方法、URI和同步方式以及认证信息等初始化一个请求。

5. send 发送 HTTP 请求,等待接收响应数据,注意,如果是以同步方式发送请求,send方法调用后不会立即返回,而是等到请求完成后才会返回,而以异步方法请求时,则会立即返回。另外,send方法带有一个可选参数body,表示要发送的数据,这在使用 POST 方法时比较有用。

6. setTimeout 设置 ServerXMLHTTP 对象的 4 个超时时间,分别是:域名解析、连接服务器、发送数据、接收响应。可以通过设置相应的超时时间来控制 ServerXMLHTTP 对象,以免 ServerXMLHTTP 不能及时返回而造成程序停止响应。

7. setRequestHeader 设置请求的 Header,在客户端 XMLHttpRequest中,通常用来设置请求的数据类型,或者标识请求的方法等等,例如 jquery 会增加头部标识 X-Request-With,表示请求是从 XMLHttpRequest 对象发出,以方便服务端做出相应的动作。

8. waitForResponse 在使用异步方式发送请求时,可以用这个方法来控制请求的进程。在服务端脚本中,不可以像客户端那样直接使用回调函数来控制异步请求,也没有相应的函数来使用程序休眠一定的时间,因此,为了等待请求返回,我们可以使用这个方法来等待一定时间。

另外,还有其他一些方法,如 getOption、setOption、setProxy 等,这些方法用得比较少,因此这里不再介绍,需要了解的朋友可以查阅 MSDN。

接下来,再看看 ServerXMLHTTP 对象的属性:

1. onreadystatechange XMLHTTP 对象状态改变时的回调函数,这个属性为异步操作奠定了一个基础,可以让程序在不用查询 XMLHTTP 对象状态的情况获知 XMLHTTP 操作是否已经完成。

2. readyState XMLHTTP 对象状态,有 5 个值,从 0 到 4,分别代表的意思是:

0 - 未初始化,刚使用 new ActiveXObject("MSXML.ServerXMLHTTP.5.0") 创建时对象所处的状态

1 - 载入中,这个时候,已经调用了 open 方法,但是还没有使用 send 方法发送数据

2 - 已经载入,已经调用了 send 方法发送数据,但是还没有可用的响应流

3 - 正在交互,正在接收数据,这个时候可以使用 responseBody 和 responseText 属性来获取已经得到的部分数据了

4 - 完成请求,全部数据已经接收完成

通常情况下,我们只需要判断一下状态 4 即可,这个时候数据已经全部载入,使用 responseBody 或 responseText 属性就能获取需要的数据。

3. status HTTP 响应状态码,正常情况应该为 200,如果请求的资源不存在,就会返回 404,还有其他状态码如服务器错误 500 等。

4. statusText HTTP 响应状态文本,用于描述响应状态码所代表的意思,诸如 200 OK 中的 OK,404 Not Found 中的 Not Found

5. responseBody 响应数据的字节数组,这在 VBScript 里是可以直接使用的,但是在 JScript 里就需要转换过了。

6. responseText 以文本方式获取响应数据

7. responseXML 将响应数据作为一个 XMLDOM 对象来返回,这在请求的数据是一个 XML 文档时特别有用

8. responseStream 响应流对象,这个属性不常用

相关文章

1a1b05c64693fbf380aa1344a7812747.png

asp在服务器把 XML 转换为 XHTML的实现代码,需要的朋友可以参考下。2011-11-11

4f55910a645b073bc4fc65dc10dc14bd.png

Jmail发邮件的例子...2006-09-09

0ea3c7666119d5615e582f823fb3fad6.png

再发几个ASP不错的函数...2007-08-08

4f96a78db829b1556ff16de21e013c7a.png

ASP javascript: Application对象的Contents和StaticObjects做Cache的一些结论。

ASP封装Cache对象,一般都是基于Application的,2008-05-05

8cc1031babc6aff2319f1c6af8544aa0.png

主要用来去除html中的script,iframe等html标记,需要的朋友可以参考下。2011-01-01

0c932a99bb7b6f23c937db507070cc7b.png

很多朋友想在最新新闻显示new图片,以便访客快速找到新更新的内容,原理就是通过判断日期2012-03-03

cca732bf65a93ed2ec0ac80c638460fe.png

解决ASP(图像)上传漏洞的方法...2006-11-11

2d9f31f2af7b675a3d153d2b7f1035a7.png

有时候大家享用base64 加解密,下面是具体的实现代码,需要的朋友可以参考下。2009-06-06

b452cee8ec5cd9e58ab98eba17281e59.png

这篇文章主要介绍了ASP获取数据库表名、库名、字段名的方法,本文例子使用的是SqlServer数据库,需要的朋友可以参考下2014-07-07

f4838ec7e2d4da28e0b57d4e852dadd4.png

这篇文章主要介绍了ASP内建对象Server的相关资料,需要的朋友可以参考下2015-10-10

最新评论

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值