在struts2的页面中,我有一个form,点击submit按钮之后调用一个action,action执行完返回页面,有没有方法让返回页面的时候执行一个JavaScript函数?谢谢。

解决方案 »

  1.   

    返回一个页面时执行js.? 两种方式:
    一种酒是你提交表单发的是ajax请求!
    二就是在你返回的页面onload事件里面写你要执行的js
      

  2.   

    LZ可以看看DWR方面的知识,可以很好的满足LZ的需求。
      

  3.   

    第二种方法不太适用,一个页面里面有很多form,不止一个。第一种方法可以,但是如果我用Ajax发请求的话,form的作用就没有了,form里面的property等标签就不能自动获得返回值了。有没有别的方法?谢谢。
      

  4.   

    PrintWriter out = response.getWriter();
    out.println("<script>parent.函数名("参数");</script>");
      

  5.   

    多个form的话,你可以加个参数设置啊
      

  6.   

    我觉得楼主要再提交后来触发
    你想想你提交后不用ajax则会把当前页面刷新。。
    这样相当于是一个新的页面。。这是form中的数据都不一样了 。
    我感觉这样不行 还是请高手来解答吧 
      

  7.   

    在body 里面加个onload=“js 代码” 这样就可以了
      

  8.   

    onload里做 多少form都没问题
      

  9.   

    谁告诉你说多个form不能用onload做呢.?
      

  10.   

    <form name="" id="" action="" method="get/post" onSubmit="">
    可以给一个onSubmit函数。
      

  11.   

    up,不是让你写在form标签里面,写在body的里面。
      

  12.   

    写在body的onload事件里面可以,如果我想用参数来区分不同form传回来的事件,用什么方式取得传回来的值呢?谢谢大家。
      

  13.   

    这样吗?String  strHtml = "<html><head><script type='text/javascript'>window.onload=function() { window.parent.alertOK();}</script></head><body ></body></html>";
    OutputStream os = resp.getOutputStream();
    OutputStreamWriter osw = new OutputStreamWriter(os, "utf-8");
    resp.setContentType("text/html;charset=UTF-8");
    osw.write(strHtml);
    osw.flush();
    osw.close();页面写个 
    function alertOK(){
    ......
    }
      

  14.   

    不是这个意思,比如我在jsp页面中有两个form,当执行完返回页面的时候在onload事件中需要区分目前是从哪个form返回的,怎么区分开?谢谢
      

  15.   

    这个我觉得你可以给每个form增加一个hidden字段。
    然后从后来取得,然后再传回来,这样前台再判断一下就知道是哪个form提交了的了
    不知道其他人还有没有其他办法
      

  16.   

    这个办法可以,不过我觉得一个page一个hidden字段就够了,后台接收不同form的请求调用的方法不同,在这些不同的方法中设置hidden字段的值,返回的时候hidden字段就是不同的值了,但是我怕onload事件是在给页面中的hidden字段赋值之前调用的,这样hidden字段的值还没有变,onload事件取得的hidden的值并不是新值。
      

  17.   

    onload 是可以的啊 Ajax完全没必要啊 我理解的意思是 在提交之后已经跳转到结果页面了 还Ajax什么了?
    lz认为onload不能实现还是你自己的逻辑没有编辑好
      

  18.   

    是我的逻辑没有想好,两个不同的form提交请求返回之后,我调onload的JavaScript function执行一些额外的操作,现在是我的function里面的操作需要先区分是哪个form返回的请求,就差在这儿现在。谢谢,有什么方法吗?
      

  19.   

    在你的后台action里面封装一个attribute,request.setAttribute("a","aa");
    在页面的最下面判断attribute的值;
    <%if(request.getAttribute("a")!=null&&request.getAttribute("a").toString().equals("aa")){ %>
     <script type="text/javascript">
         fun1();
    </script>
    <%}%>这样就是返回action后,回来调用js中的方法fun1();你试试吧。很笨的一个方法,不要见笑;
      

  20.   

    在返回页面的时候用一个条件判断一下,然后执行onload应该可以的
      

  21.   

    你的方法很有启发,我在onload事件中可以这么写
    onload="loadPage(<%request.getAttribute("a")%>);"
    在loadpage中进行判断就可以了。
    我试试,然后结贴,谢谢。
      

  22.   

    其实蛮简单的一个问题,我不知道我的理解是不是正确,LZ的意思是在页面提交之后回来的时候要有一个字段用来判断执行哪一段Js代码,是这样吧,你的页面有两个form在提交的时候,form1带一个a=1的参数,form2带一个a=2的参数,然后在回来的时候,进行判断,就可以了,其他的就不用管了。