本菜鸟遇到一个问题,望大侠们帮忙我想实现页面的局部刷新,因为不知道如何实现,故将其分为几个步骤。1. 通过由A.jsp生成的页面得到要传递的参数。
2. 经过某个action处理.
3. 将在action中得到的值传给 a.jsp 页面
4. 解析a.jsp页面。5. 得到a.jsp页面的输出,并将其放到由A.jsp已经生成的页面中的指定容器中。请问各位大侠们,这种方式可以实现吗?最好是能给些粗略的代码提示?

解决方案 »

  1.   

    用嵌套IFrame的方式来做更简单些。主页面不刷新,其中所嵌套的IFrame子页刷新就行了。
      

  2.   

    我想用 action的方式来实现。不知道能否做到?
      

  3.   

    可以啊。比如外框架是 Main.jsp ,嵌套一个IFrame名为 center然后可以从外框架用<A>或者window.open等方式,控制center所访问的URL,可以带参数。那么你这个URL,指定为action的url就行了。
    当然,如果你希望用Ajax就是另一种套路了。
      

  4.   

    对啊,用jquery.ajax可以做到的啊  简单又好用
      

  5.   

    jquery how to? 菜鸟,不懂,还望指教。
      

  6.   


    楼主我感觉你还不太清晰B/S架构的基本原理。建议先掌握基本的J2EE体系,然后再理解Ajax开发模型,jQuery只是便于你使用Ajax的工具,不是说用了jQuery一切问题迎刃而解的。
      

  7.   

    用<jsp.include page="*****.jsp" flush="true">  不行么?
      

  8.   

    回复:ldh911,谢谢你的建议。对B/S的基本原理我的确并不清晰,才出现在的状况——即使你们这样帮我说出了 实现 此功能的思路以及各种解决方案,我还是一头雾水。
    我是第一次接触你们提及的处理局部刷新的解决方案的,也是第一次尝试着去解决局部刷新问题。让各位见笑了。
      

  9.   

    这里有个非常简单的,用Ajax对所输入帐号是否重复进行检查并提示的小例子,应该算比较简单的了,你参考看看:
    http://i5land.iteye.com/blog/311710主要是理解所谓Ajax异步的整体系统流程大概是怎么样的。
      

  10.   

    哦耶,你推荐的那个我实现了但我不知道为什么,把 ajax 应用到其它的地方会出错。
    我把我的部分关键代码贴如下:配置响应动作的 xml
    <action name="dealSecPage" class=".....">
        <result>/pages/frame/front/ B.jsp </result>
    </action>我的目的是通过传递一个参数给 处理B.jsp的action,经过action 处理后,将 B.jsp 放到 a.jsp 的 #content中a.jsp
        <body>
            <div header="..">
            </div>
            ...
    /*******************  异步加载动态数据的 js  ****** ****/
            <script type="text/javascript">
            var xmlHttp;
    function createXHR(){
    if( window.XMLHttpRequest ){
    xmlHttp = new XMLHttpRequest();
    }else{
    xmlHttp = new ActiveXObject( "Microsof.XMLHTTP" );
    }
    }
    function sendReq( id ){
    createXHR();
    xmlHttp.open( "post", "dealSecPage.action?menu.id="+id ); xmlHttp.onreadystatechange = callbackData;
    xmlHttp.send( null );
    document.getElementById( "content" ).innerHTML ="";
    } function callbackData(){
    if( xmlHttp.readyState == 4 ){
    if( xmlHttp.readyState == 200 ){
    var text= xmlHttp.responseText;
    if( text ){
    document.getElementById( "content" ).innerHTML = text;
    }
    }
    }
            </script>        <div id="content">
               ...
               <a href="javascrip:sendReq( <s:property vlaue='id'/> )"></a>
               ...
            </div>
            ...
            <div id="footer">
            </div>
        </body>
      

  11.   

    <result>/pages/frame/front/ B.jsp </result>
    B.jsp前面多了个空格,这个实际情况没写错吧?另外在action 和 B.jsp中,增加点 System.out.println("xxoo"),确保action 和 B.jsp确实被执行,尤其是一些关键性的处理之后。此外,这里:
    if( xmlHttp.readyState == 200 ){
      var text= xmlHttp.responseText;
      if( text ){
         document.getElementById( "content" ).innerHTML = text;
      }
    }
    增加else处理,很可能就已经出错了的,把出错后返回的信息alert出来看看。
    总之,刚开始玩Ajax,调试会成为一个比较麻烦的地方,所以多自己注意进行捕获和处理。
      

  12.   

    很感谢你们,终于成功了。呵呵,做梦都要笑了。尤其感谢 ldh911。谢谢你们的帮助,让我再这个问题上坚持了四天不放弃。thank you for your persistence.