XMLHTTP异步获取返回值的代码超时测试(AJAX)
XMLHTTP异步获取返回值的代码超时测试(AJAX) 10










客户端文件,请修改文件名为:test_2.htm
<html>
<body>
xmlhttp异步的例子:
URL: <input name=a type=textbox value='test_s.asp' style='width:600px' >
<input onclick= 'getXML()' type= 'button' value= '得到源代码'>
<input name=geti type=textbox value='10000'>
<input onclick= 'if(xh && xh.responseText) {alert(xh.responseText);oDiv.innerHTML=xh.responseText} ' type= 'button' value= '显示源代码 ' >
<div id=m style='display:none'></div>
<script language=javascript>
var oDiv
var xh
function getXML()
{
oDiv = document.all.m;
oDiv.innerHTML = '正在装载栏目数据,请稍侯....... ';
oDiv.style.display = '';
xh = new ActiveXObject('Microsoft.XMLHTTP')
xh.onreadystatechange = getReady;
xh.open('POST',a.value + '?geti=' + geti.value,true);
//alert('geti=' + geti.value);
xh.send();
}
function getReady()
{
if(xh.readyState==4)
{
if(xh.status==200)
{
oDiv.innerHTML = xh.responseText;
oDiv.innerHTML = oDiv.innerHTML + 'load over'
}
else
{
oDiv.innerHTML = '抱歉,装载数据失败。原因: ' + xh.statusText
// 我测试了,一旦运行时间过长会出现:抱歉,装载数据失败。原因: Internal Server Error
// 但是这个时间是多少呢?在哪里设定呢?
}
}
else
{
oDiv.innerHTML = '已经有数据了,不过readyState检测未通过<br>';
switch (xh.readyState){
case 0:
oDiv.innerHTML = oDiv.innerHTML + '0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)';
break;
case 1:
oDiv.innerHTML = oDiv.innerHTML + '1 (初始化) 对象已建立,尚未调用send方法'
break;
case 2:
oDiv.innerHTML = oDiv.innerHTML + '2 (发送数据) send方法已调用,但是当前的状态及http头未知'
break;
case 3:
oDiv.innerHTML = oDiv.innerHTML + '3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误, '
break;
case 4:
oDiv.innerHTML = oDiv.innerHTML + '4 (完成) 数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据'
break;
default:
oDiv.innerHTML = oDiv.innerHTML + xh.readyState + '未知状态'
break;
}
oDiv.innerHTML = oDiv.innerHTML + '。请等待'
}
}
</script>
</body></html>
服务器端文件,请修改文件名为:test_s.asp
<%
dim i
dim r
dim t
dim lngGetI
lngGetI=request.querystring('geti')
on error resume next
lngGetI=clng(lngGetI)
if err<>0 then
response.write 'GetError: not isnumber()'
response.end()
end if
if lngGetI<0 or lngGetI>500000 then
lngGetI=10000
end if
response.write 'Run Repeat At:' & lngGetI & '<br>'
t=timer
for i=1 to lngGetI
r = r & i
if i mod 20 = 0 then
r= r & 'a<br>'
end if
next
response.write 'run timer:' & cdbl(timer()-t) & '<br>'
response.write r
%>
access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接
适用环境: IIS 6.0
IIS 5.0
Internet Explorer 6.0
关键字: >>>