有主页面A.jsp和子页面B.jsp,子页面C.jsp在主页面A上使用document.formlist.test.value=window.showModalDialog('addcydy.jsp');打开子页面BB页面是个多选checkbox的弹出框  现在的需求是  在B页面点击提交后 页面B上选择的checkbox值传回给A页面并关闭子窗口现在我是在利用点击按钮做的 代码如下function myreturnValue(){   
        var obj =  mlist.cydy;   
        var array =new Array();   
        for(var i=0;i<obj.length;i++)   
       {   
            if(obj[i].checked==true)   
           {   
  array[i]=obj[i].value;   
   }
        } 
      alert("页面即将跳转"+array);        
  window.returnValue=array;
  window.close();
}OK  现在问题来了  用此方法可以实现我需要的传值功能  即B选择的值传给A  然后A页面在不经过重新刷新的情况下能改变A页面上的内容但是目前的问题是:    1,循环传值的方法能够实现 但是不经过这句话 alert("页面即将跳转"+array);处理一下 传回去显示的值就是一个[OBJECT]
                      若经过alert("页面即将跳转"+array);处理的话传回去的值就是默认的自动用逗号隔开的字符串
                         比如有1-10 这10个数字  我选中了  3,5,7 这3个值  那传回去显示的值就是,,3,5,7,, 这样的组合
                         而这是我不希望的,希望能有解决办法。
                      2,都知道JS是前台处理,页面我使用的是JSP,我希望将B页面checkbox选择的值,比如刚才例子中的3,5,7这3个值 传回去A页面的
                         时候并不是直接显示,而是把值先传给后台,让后台把值给处理一下,然后再在A页面上显示处理过的值,这个过程我不是太了解 
                         JS传回的值是前台操作,但是要处理的话却是后台操作,这中间应该还有前台,后台运行顺序的问题,所以想请教下该如何进行我想
                         的操作,而且有个要求是无法通过表单提交action跳转实现操作,因为通过action跳转就必定要对A页面进行刷新,而这也是我不想见
                         到的,因为一起有B页面和C页面两个子页面都是A的子页面 如果采用action跳转的话 当A获得B页面的值后 再去获得C页面的值的话 B
                      页面传回来的值必将被刷新掉,所以传值需要通过JS来操作,还得经过数据处理,请各位帮帮忙 谢谢也许我的思路并不一定正确,总的需求是 A页面打开的子页面B和子页面C    在B上多选后把值传回A 经过数据处理,将处理后的值显示在A上
                                                                     在C上多选后把值传回A 经过数据处理,将处理后的值显示在A上
                         B和C传回的值要能同时存在 而且在A页面B和C传回值显示的地方是在同一个form表单里 要提交数据就得一起提交,所以我用Iframe进行
                         
                         局部刷新也不大好实现,Ajax我又不懂,所以看看有没JS的处理办法 请大家帮帮忙 谢谢! 
  

解决方案 »

  1.   

    最好用AJAX传参吧 这样界面很友好 而且解决了你的问题。
      

  2.   

    你用的window.showModalDialog打开的,就不用什么AJAX了吧
      

  3.   

    对于问题1 你用 window.returnValue=array.toString() ;
      

  4.   

    用iframe也好实现的 既然你知道打开的是B还是C
    那么可以在获得showModalDialog的返回值以后 给需要提交的form的action里加个flag=xx来区分
    然后提交给iframe iframe在利用这个flag来输出一段JS就可以更新A的哪块区域了
      

  5.   

    问题1
    ---
    array.join();//把数组中的项连接成字符串
    问题2
    ----
    需要ajax,把从b.jsp中获取到的值使用ajax传递到c.jsp,然后c.jsp接收这个值后返回数据给ajax,ajax接收返回值然后赋值给a.jsp中的控件大概流程如下,ajax怎么使用楼主还是自己看看,很简单的
      

  6.   

    用window.returnValue=array.toString() ;显示出来的值仍然是用逗号自动隔开的哦 当然如果能解决第二个后台处理数据的问题的话 这点就无所谓了毕竟只是要处理后的数据  用iframe的方法学到了 谢谢你的两种解决办法 
     
      

  7.   

    [Quote=引用 7 楼 showbo 的回复:]
    问题1 
    --- JScript codearray.join();//把数组中的项连接成字符串
    这个办法也可行 谢谢Ajax在处理这方面确实很方便  正在找资料 
      

  8.   

    谁有类似的AJAX资料啊 呵呵 帮忙给个 我找了好多都不对版
      

  9.   

    function __createXMLHttpRequest()
    {
        var xhr = null;
        var msProgs = ["Microsoft.XMLHTTP", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP"];
        for (var i = 0, l = msProgs.length; i < l; i++)
        {
            try
            {
                xhr = new ActiveXObject(msProgs[i]);
                break;
            }
            catch (e){}
        }
        if (!xhr)
        {
            try
            {
               xhr = new XMLHttpRequest();
            }
            catch (e){}
        }
        if (!xhr)
        {
            return null; // null
        }
        return xhr; // XMLHttpRequest
    }