Ajax onreadystatechange问题

lidup 2008-11-18 04:06:51
<script type="text/javascript">
var xmlHttp;
//创建一个XmlHttpRequeset对象
if(window.ActiveXObject)...{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)...{
xmlHttp = new XMLHttpRequest();
}

//开始一个请求
function startRequest()...{

xmlHttp.onreadystatechange = handlestatechange;
xmlHttp.open("GET", "SimpleRespose.aspx", true);
xmlHttp.Send(null);
}

function handlestatechange()...{
if(xmlHttp.readyState == 4)...{//描述一种"已加载"状态;此时,响应已经被完全接收。
if(xmlHttp.status == 200)...{//200表示成功收到
alert("The Server Replied with:" + xmlHttp.responseText)
}
}
}
</script>

现在用一个window.interval("startRequest()",10000)每隔10秒就调用一次
startRequest函数。 在SimpleRespose.aspx的load事件里面每次都response回一个字符串。
但是只有第一次调用startRequest函数的时候才回调用handlestatechange(),这是什么原因呢?按理来说应该每open()一下,当服务器返回时就调用handlestatechange啊
...全文
127 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kukufly 2009-05-15
  • 打赏
  • 举报
回复
学习了
lidup 2008-11-18
  • 打赏
  • 举报
回复
好的,我当时考虑这样做了,不过没找到js里面转换的方法,谢谢了你。
  • 打赏
  • 举报
回复
可以的,你可以把byte[]变成 base64编码,在客户端收到后反向转成byte就可以了。不过不知道js有没有转换base64的功能,这个你可以去查下。
lidup 2008-11-18
  • 打赏
  • 举报
回复
呵呵,对啊,就是这个原因。response时候怎么把一张图片返回来呢?不要他的地址,有这样的解决方案吗?同时在接收端再解码。
  • 打赏
  • 举报
回复
否则readyState状态后面就不会发生改变,那么事件就不会触发了。
  • 打赏
  • 举报
回复
if(window.ActiveXObject)...{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)...{
xmlHttp = new XMLHttpRequest();
}
这段代码每次都要执行吧。
lidup 2008-11-18
  • 打赏
  • 举报
回复
晓得什么原因了,不过还是希望大家能够多多指教啊

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧