我要实现的功能:类似优酷视频的留言板,大家一起看视频可以提问题,点击提交后问题进入数据库,页面下面是即时更新显示所有观看者提出的问题。知道可以用Ajax做,希望大虾给个示例代码。先谢谢啦

解决方案 »

  1.   

    急有什么用呢?
    先说说你会多少ajax的东西吧.
      

  2.   

     呵呵,工作要做的东西啊,我ajax只写过异步验证,我是刚进一个公司的小程序员
      

  3.   


    使用 setTimeout和setInterval
    http://book.csdn.net/bookfiles/344/10034413534.shtml
      

  4.   

    IBM有专栏,看了就明了了,去ibm搜ajax
      

  5.   

    function submitQA() {
    document.qasubmit.body.value = "";
    qahint.innerHTML = "<b> 您的发言已经提交,欢迎继续发言。谢谢。</b>"
    }//点击问题提交调用
    function readySubmit() {
    //setTimeout(submitQA, 1000);
    setTimeout(function(){assign('target')} , 0);
    }//异步加载数据处理页面
    function load(id) {
    assign(id);
    setTimeout(function () {
          load(id);
       },15000);
    }//往主页div插入一个页面
    function assign(id){
       /* Create a new XMLHttpRequest object to talk to the Web server */  
       var xmlHttp;try
        {
      // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
        }
    catch (e)
        {
      // Internet Explorer
      try
          {
          xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          }
      catch (e)
          {      try
            {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
          catch (e)
            {
            alert("您的浏览器不支持AJAX!");
            return false;
            }
          }
        }   
      var url='qalist.jsp?forumId=<%=forumId%>';
      
      xmlHttp.open('get',url,true);
      xmlHttp.onreadystatechange=function(){
        if(xmlHttp.readyState==4){
      
          document.getElementById(id).innerHTML=xmlHttp.responseText;
          //alert(req.responseText);
        }
      }
      xmlHttp.send(null);
    }
      

  6.   

    ajax你不是写出来了么?还有什么问题么?无非就是ajax请求过去把所有的聊天记录查出来,然后返回给页面用一定的格式显示就可以了。我相信你做过ajax异步验证做这个一定没问题。
      

  7.   

    现在有个问题是我一提交问题时,主页面局部已经能刷新问题了,但是浏览器会开一个页面里面的内容就是单独的聊天记录,就是嵌入到主页面div里面的那个Jsp.不知道这是什么问题
      

  8.   

    你是先把返回的数据在一个jsp里面展示出来,再将div的innerHtml设置为这个jsp内容么?
      

  9.   

    嗯,首先<BODY topMargin=0 leftMargin=0 onload="load('target')">就加载进那个内嵌的jsp也就是问题的页面。
    //异步加载数据处理页面
    function load(id) {
    assign(id);//把问题展示页面内嵌到视频页面下部的一个div中的方法
    setTimeout(function () {//有多人在看在线视频 15秒刷新下
          load(id);
       },15000);
    }
      

  10.   

    function load(id) {
    assign(id);
    setTimeout(function () {
        load(id);
      },15000);

    这个是什么意思?还带嵌套的是么?
    感觉你说的这个现象,好像和ajax没什么关系,是你的页面js出错了。
    ajax返回的数据,用js直接处理不就行了么?怎么又扯上jsp了?
      

  11.   


    因为是在需求是类似在线视频会议的,一个人提交问题是下面问题显示框立即刷新,其他人也开了这个视频页面他也要看到这个问题的刷新,所以这个方法是所以打开的页面运用定时器定时局部刷新也就是定时用ajax加载问吧。
      

  12.   


    没理解什么意思,用iframe来做可以解决吗?
      

  13.   

    楼主去查查 DWR ,我用着不错
      

  14.   


    呵呵,公司之前这个就是用Iframe做的,但是用iframe做不利于搜索引擎搜索,因为提问对搜索引擎搜索有价值。所以要改成ajax做便于搜索引擎搜索。问题提交局部刷新已解决,就是提交问题局部刷新的同时会另外单独打开一个页面:就是主页面局部刷新的那个jsp
      

  15.   

    ⊙﹏⊙b汗我找出原因了:这个功能之前是用iframe做的,用于输入和提交问题的form在主页面a.jsp,这个form有一个target,from把数据提交给action  打开显示所有提问内容的target页面即b.jsp.但是因为是iframe做的a.jsp里用<Iframe name=b src="b.jsp?forumId=<%=forumId%>" scrolling=yes></Iframe> 硬是把新开的b.jsp嵌入到自己页面中,所以没有单独打开一个只显示提问内容的b.jsp.
        我现在用ajax做,提交数据的from有target的话就会打开一个只显示提问内容的b.jsp.form里不写target的话就是b.jsp替换a.jsp 即只打开了b.jsp. 囧!!!!这个问题怎么解决啊。
      

  16.   

    =。=!暂时用了一个很正规的方法,在b.jsp加载数据没有显示时利用window.close();直接关掉b.jsp。