xmlhttprequest设置varAsync=true后,在谷歌浏览器(chrome)下,本应该异步请求阶段执行的语句,却跟请求成功后的语句一起执行了,导致看不到效果,如何解决,意思就是异步请求在谷歌浏览器里面貌似无效的?
例代码片段:
//回调 xmlHttp.onreadystatechange = updatePage; // 发出请求,服务器按照您的要求工作。 xmlHttp.send(null); //2.2:处理响应 function updatePage() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { //在谷歌浏览器问题 document.getElementById("zipCode").value=xmlHttp.responseText; } else if (xmlHttp.status == 404) { alert("访问页面不存在!"); } else { alert("发生错误!"); } } else { //在谷歌浏览器下,这句话与上面的同时执行了,导致zipCodevalue值显示‘加载 //中....’后,瞬间就给xmlHttp.responseText的值覆盖了,导致过度效果 document.getElementById("zipCode").value = "加载中..."; } }
博客园真不咋么地,连续问了几个问题,都找不到人解决,失望透顶
楼主要理清逻辑 什么是异步请求。。
异步 就是代码执行到异步请求这里了 发出异步请求的时候 后面的代码会继续执行,这样异步请求回来了结果,后面的代码也返回了结果就产生了楼主你说的覆盖
理清下逻辑 改下代码就能实现了
你不明白我的意思啊,朋友,
xmlHttp.onreadystatechange调用的函数,像是定期执行一样,当
xmlHttp.readyState=4,我执行
document.getElementById("zipCode").value=xmlHttp.responseText;
当
xmlHttp.readyState=1/2/3的时候,我执行
document.getElementById("zipCode").value="加载中...",
.ashx的文件里面设置一下线程等待两秒
system.Threads.Thread.sleep(2000),
按道理说,这应该能看到加载的效果的,可是IE,火狐都能看到效果,只有谷歌浏览器,他并不按照这个逻辑执行,而是先请求了.ashx后,等到.ashx页面返回了状态信息,他才把代码重头执行了一遍,就看不到异步效果了,这是为何
你怎么没有Open()?还有异步请求不是有个属性嘛,不知道是不是默认是异步请求的。你设置一下嘛看看。async=false