我做一个要随着时间进行,实时显示进度信息的功能,用setInterval()+ajax实现,ajax用来发送查询数据库服务器的请求,并把返回回来的查询结果进行处理,setInterval()用来决定每隔15秒发送一个这样的请求,样子如: var inter= window.setInterval("getResponse();",1500); function getResponse() 

    var url = 'eventid=1' 
    var sUrl = "Response2.aspx?"; 
    var myAjax = new Ajax.Request(sUrl, {method: 'get', asynchronous:true,parameters: url,onComplete:getRefreshComplete});  
} function getRefreshComplete(originalRequest) 
    { 
        eval(originalRequest.responseText); 
        document.getElementById("ajaxRespone").innerHTML=originalRequest.responseText; 
    } Response2.aspx是查询页面,启动过程是点击请求页面的一个button,后台去调用一个web服务,前台就开始执行这个setInterval()了(后台的web服务执行需要两三分钟,这个过程中,会把产生的信息写入数据库,ajax就负责抓回这些信息返还给客户端展示),但是奇怪的是,setInterval()不是每隔15秒发送一次请求,而是等后台那个web服务执行结束后,才把这3分钟积攒的发送请求一口气都发过去,结果返回来的信息都是web服务执行完毕的信息。 难道是setInterval()失效了吗?请高手指教啊。

解决方案 »

  1.   

    其实不用管那个Response2.aspx,这个是跟数据库交互的,jsp和PHP都可以,关键是为什么会等待web服务执行完才把请求一起发过去?
      

  2.   

    对于这种现象,我的理解是服务器的并发机制处理得不好,或者是那个web程序的运行优先级较高,对前台传过来的ajax请求,被服务器放在较后的位置进行处理,这样,ajax就不是按照你想要的时间间隔来取数据,而是一次性取得处理完后的数据。
    另外,你说15秒执行一次,但是那个1500却是1.5秒啊...