我的效果是这样的:
在IE8上,页面上每隔10秒要到后台数据库查询数据,并把每条数据更新到页面上,页面数据要滚动循环显示,数据的条数不确定。我的实现方式是:
使用setInterval,定时周期执行一个函数,在函数中通过AJAX调用后台,并返回数据的XML档格式字串。然后用JS解析这个字串,构造要添加到页面的TR,TD元素,然后放到一个table中。问题是:
现在每次调用要耗时约2秒钟,后台消耗大约0.5秒,其他主要消耗在JS解析传回字符串和 构造TR,TD元素并添加到table中。在这两秒中,页面的滚动效果会停顿,而且也不能切换到其他标签页面。请问有什么好方法去掉这种停顿呢?

解决方案 »

  1.   

    在ajax中提交有两种形式:同步和异步 
            xmlHttp.open( "GET ",   url,   true);//xmlHttp.open( "GET ",   url,   false); 同步:提交后等待服务器的响应,接收服务器返回的数据后再执行下面的代码 
    异步:与上面相反,提交后继续执行下面的代码,而在后台继续监听,服务器响应后有程序做相应处理,异步的操作好处是不必等待服务器而可以继续在客户端做其它事情。
      

  2.   

    setInterval后有没有clearInterval???TR,TD这类东西为啥每次都要拼接呢?
      

  3.   

    1、建议数据用JSON,XML貌似数据量会大一些
    2、页面上的元素操作不要用DOM,建议拼字符串然后放到innerHTML里
      

  4.   

    请参考
    http://topic.csdn.net/u/20101219/14/987dd6f0-fe25-4bbe-8f06-5b89cbf3e3f4.html
      

  5.   

    首先谢谢大家。关于AJAX的同、异步调用。由于大部分时间消耗在AJAX调用后,对结果的处理,因此设置同、异步效果不明显。为什么每次要拼接TR,TD。因为每次数据条数不确定。另外每条数据变动的地方也很多,如果不是每次重新构造TR,TD,会变得很复杂。页面上的元素操作我也没有用DOM,都是拼接字符串再用Jquery.html(str)放里面的。
      

  6.   

    建议不要用table,用div速度应该会快些
      

  7.   

    其实你可以用iframe嵌套一个jsp 然后 父页面每个10秒提交一下iframe的form 这样简单很多 而且逻辑上海游分层效果