当我们在利用无刷新技术制作网站的时候,一般都是通过AJAX技术或XMLHTTP技术,根据客户端的操作,获取服务器端的数据,最后显示到客户端!
在此过程,就涉及到了这样的状态,即请求服务器、接收服务器回传的数据、显示数据;
以上的三种状态,都是在客户端的浏览者未觉察的状态下发生的,如果您要获取的数据量非常大,加上没有任何的提示,那么,会导致获取数据时间较长,使浏览器处于停滞状态,最后的结果就是,访客以为您的网站带有病毒或带有木马,经常会吓跑您的客户。
针对这样的情况,我们应当使用提示的功能,即在请求服务器的时候,就显示提示,让浏览者有一个心理上的准备!
比如下面的代码:
function GetServerData()
{
if (MyXmlHttp.readyState < 4)
{
px.innerHTML="<img src='Img/Gif/loading.gif'/>正在加载数据,请稍后……<br>";
}
if (MyXmlHttp.readyState == 4)
{
//数据获取成功,这里就是您的代码了!
}
}
以上代码就是显示数据加载状态的提示与显示已获取的数据。
上面的代码,存在这样的问题,即,如果您获取的数据量太小,根本就无法看到提示,而是直接显示结果。
但是,并非是提示信息代码没有执行,而是已经执行了,只是看不到而已。我们可以验证一下是否已执行,将如上部分代码改为:
if (MyXmlHttp.readyState < 4)
{
px.innerHTML="<img src='Img/Gif/loading.gif'/>正在加载数据,请稍后……<br>";
alert(px.innerHTML);
}
很明显,通过以上的改动之后,我们就可以看到提示效果了,现在我们应该明白了,提示代码不是不执行,而是由于获取的数据量太小,加上代码都是在同一函数执行的,时间间隔非常短,因此看不到提示效果。
针对以上问题,我们可以使用JS里面的setTimeout()函数或setInterval()来解决!或者那您在服务器端代码更新之前加上个System.Threading.Thread.Sleep(1000);即可。