msxml2.xmlhttp 问题,假死状态如何解决?

源文件:

Function saveData(d)
Dim xmlHttp
Dim sData

Set xmlHttp = CreateObject("Msxml2.XMLHTTP")
sData=d
xmlHttp.Open "POST", "save.asp", false
xmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlHttp.Send (sData)

saveData = xmlHttp.responseText
Set xmlHttp = nothing
End Function

=======================================================================

当发送数据等待返回结果的时候,浏览器假死,只有当数据返回后才可用,怎样解决?
我想用脚本监视发送返回数据状态,该怎样做??

有没有关于xmlhttp的文章或是教程?谢谢
---------------------------------------------------------------

楼主可以参考我以前的一个帖子:
《利用XMLHTTP检测网址及探测服务器类型》
http://expert.csdn.net/Expert/topic/1344/1344710.xml?temp=5.977809E-03

用到OnReadyStateChange,ReadyState
---------------------------------------------------------------

ReadyState 整型 说明异步操作的状态:未初始化(0),正在加载(1),已加载(2),交互(3),或者已完成(4)。
---------------------------------------------------------------

XMLHTTP 对象方法

方法 说明
Abort 取消当前 HTTP 请求。
GetAllResponseHeaders 从响应信息中检索所有的标头字段(header fields)。
GetResponseHeader 从响应信息正文中获得一个 HTTP 标头值。
Open 打开一个与 HTTP 服务器的连接。
SetRequestHeader 设定一个请求的标头字段。
Send 向 HTTP 服务器发送请求。可包含正文。

XMLHTTP 对象属性

属性 值 说明
OnReadyStateChange 事件处理器参考 仅用于异步操作。指定当就绪状态发生改变时(例如当数据从服务器上返回时)调用的事件处理器。
ReadyState 整型 说明异步操作的状态:未初始化(0),正在加载(1),已加载(2),交互(3),或者已完成(4)。
ResponseBody 变量数组 将响应信息正文作为数组返回。
ResponseStream Istream 将响应信息正文作为一个 ADO Stream 对象返回。
ResponseText 字符串 将响应信息正文作为一个文本字符串返回。
ResponseXML XMLDocument 对象 返回响应信息正文,并视为已被 MSXML XMLDOM 语法分析器分析过。
Status 长型 由服务器返回的 HTTP 状态码。
StatusText 字符串 HTTP 响应行状态。

---------------------------------------------------------------

xmlHttp.Open "POST", "save.asp", True '这里用True,则会立即执行别的代码而无需等待返回数据
xmlHttp.onreadystatechange = GetRef(someFunc) 'VBS中必须加GetRef来取得函数引用
....

Sub someFunc '这个过程处理xmlHttp事件
If xmlHttp.readyState = 4 'Finished Then
.......
End If
End Sub

可以参考MSDN,搜索“IXMLHTTPRequest”。
---------------------------------------------------------------

asp里应该用Microsoft.ServerXMLHTTP
---------------------------------------------------------------

http://www.ccw.com.cn/htm/center/prog/02_6_13_2.asp

http://expert.csdn.net/Expert/TopicView1.asp?id=1395694
---------------------------------------------------------------

xmlHttp.Open "POST", "save.asp", false

你用的是同步调用。改成异步就好了

---------------------------------------------------------------

改成true以后,你要判断一下状态才可以读,否则肯定错
---------------------------------------------------------------

XMLHTTP.setTimeouts(resolveTimeout, connectTimeout,
sendTimeout, receiveTimeout)

Published At
Categories with Web编程
Tagged with
comments powered by Disqus