XMLHTTP中的readystate属性为什么永远是4

来源:百度知道 编辑:UC知道 时间:2024/05/24 09:37:33
Public Function urlbodytxt(urlstr As String) As String
Dim httpobj As New MSXML2.XMLHTTP50
Dim thetimeout As Long
httpobj.Open "get", urlstr, True

httpobj.send
thetimeout = GetTickCount()
Do
If httpobj.readyState = 4 Then
If httpobj.Status = 200 Then
urlbodytxt = BytesToBstr(httpobj.responseBody, "GB2312")
Else
urlbodytxt = ""
End If

Exit Do
End If

If GetTickCount() - thetimeout > 6000 Then
urlbodytxt = ""

Exit Do
End If
DoEvents
Sleep 200
Loop
Set httpobj = Nothing
End Function

我是用来测试是否能在6秒内打开我要打开的地址,由于是循环运行这个过程,只要运行后有一次readystate值达到了4(即成功访问到目标地址)后,那以后再运行到这里时,readystate的值就是一下子就到4

xmlhttp:readyState属性
readyState

返回XMLHTTP请求的当前状态
语法

lValue = oXMLHttpRequest.readyState;

Example

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获取完整的回应数据

1-4是四种状态,4表示xml传输交互完毕。