菜鸟求大神解决个问题(子页面刷新父页面问题),这个问题已经困扰我两天了!

时间:2022-01-21 23:48:14
父页面查询方法
function queryData(){
  
    var frm=$name("form1");
     frm.elements["_eosFlowAction"].value="query";
    var frm1 = $name("form2");
     if(frm1==null){

             frm.elements["page/length"].value =10;
      }else{
       frm.elements["page/length"].value = frm1.elements["page/length"].value;
                
      }
      if(frm1!=null){
     var length = frm1.elements["page/length"];
      if(!checkPageLength(length)){//检测“每页显示”的值,是否为小于100的正整数
           return false;
      }
  }
   frm.submit();//提交form
}

子页面保存方法
function saveData(frm){

         var g = $id("group1");
      if (g.getSelectLength() < 1) {
        alert("<b:message key="MSG_SELECTITEM"/>");
        return;
      }

      if( !confirm("<b:message key="BESURETOWHATCHTHISGROUPS"/>") ) { 
         return;
       } else{
       
           
          var action_url = "com.sundata.qrms.rc.groupwatch.GroupWarch.addGroups.biz";
var ajax = new Ajax(action_url);
         ajax.submitForm(frm);
var returnNode =ajax.getResponseXMLDom();
  
        if (returnNode){
       
         if(ajax.getValue("root/data/ret")=="1"){
    alert('<b:message key="l_m_save_success"/>');
    opener.location.reload();
            }
            if(ajax.getValue("root/data/ret")=="0"){
               alert('<b:message key="l_m_save_fail"/>');
            }
           
        }else{
         alert('<b:message key="DBEXCEPTION"/>');
        }
      }
     
      
      window.close();
}

20 个解决方案

#1


刷新父页面时不可以跳出Windows自带的重新刷新小窗口  谢了 各位

#2


没人帮忙吗?谢谢各位 本人菜鸟一个 刚学 JAVA

#3


人呢?谢谢大神们

#4


如果父页面提交过表单,那么用reload()肯定会带出那个浏览器提示窗口的,因为这是重复提交。


建议合适的做法是,在子页面操作父页面的那个 提交按钮,比如:
var btnSubmit = document.getElementById("xxxooo"); // 查找该按钮
btnSubmit.submit(); // 触发提交动作

#5


引用 4 楼  的回复:
如果父页面提交过表单,那么用reload()肯定会带出那个浏览器提示窗口的,因为这是重复提交。


建议合适的做法是,在子页面操作父页面的那个 提交按钮,比如:
var btnSubmit = document.getElementById("xxxooo"); // 查找该按钮
btnSubmit.submit(); // 触发提交动作

哇!偶像 越狱主角!哈哈  不明白啊!菜鸟一个!

#6


刚一个好人回答了怎么又没人了?唉

#7


引用 4 楼  的回复:
如果父页面提交过表单,那么用reload()肯定会带出那个浏览器提示窗口的,因为这是重复提交。


建议合适的做法是,在子页面操作父页面的那个 提交按钮,比如:
var btnSubmit = document.getElementById("xxxooo"); // 查找该按钮
btnSubmit.submit(); // 触发提交动作


哥啊 帮忙解决下吧?

#8


在你的父窗口,写一个函数,比如:
function reSubmit() {
  var btnSubmit = document.getElementById("xxxooo"); // 查找该按钮
  btnSubmit.submit(); // 触发提交动作
}

提交按钮必须有id,名称跟函数中的必须保持一致:
<input id="xxxooo" type="submit" value="提交">



然后子窗口调用:
opener.reSubmit();

#9


引用 8 楼  的回复:
在你的父窗口,写一个函数,比如:
function reSubmit() {
  var btnSubmit = document.getElementById("xxxooo"); // 查找该按钮
  btnSubmit.submit(); // 触发提交动作
}

提交按钮必须有id,名称跟函数中的必须保持一致:
<input id="xxxooo" type="submit"……


唉 郁闷啊 还是不行啊!

#10


该回复于2012-07-23 16:36:48被版主删除

#11


引用 10 楼  的回复:
学习学习 帮忙顶顶


谢谢  这个问题郁闷我两天了

#12


不行么?这是常用招数。

你的错误信息是啥?

#13


引用 12 楼  的回复:
不行么?这是常用招数。

你的错误信息是啥?


没报错误 就是不刷新父页面啊!我一楼写了子页面和父页面 代码了

#14


没错误信息,就是不刷新父页面,还要点一下父页面的查询才显示刚新增的那一条数据的

#15


引用 12 楼  的回复:
不行么?这是常用招数。

你的错误信息是啥?


没有错误信息的,就是没有刷新父页面,新增的那条数据需要点击父页面的查询才能显示

#16


你先试试这个最简单的例子,掌握原理,然后再修改你自己的源程序,否则容易越改越乱。

总共两个页面:
main.html 主页面,带表单提交。
pop.html 弹出页面,点击按钮时提交主页面并关闭自己。

为了演示效果,在程序中对输入框自动填入了随机数,这样你通过看浏览器的地址栏URL变化,就可以知道确实提交了。

【main.html】

<html>
<head>
<script>
function reSubmit() {
  var form = document.getElementById("xxxooo"); // 查找需要提交的表单
  form.submit(); // 触发提交动作
}
</script>
</head>
<body onload="document.getElementById('name').value=Math.random()">
<form id="xxxooo">
  姓名:<input id="name" type="text" name="name" value="123" />
  <br />
  <input type="submit" />
  <br />
  <input type="button" value="popup" onclick="window.open('pop.html');" />
</body>
</html>



【pop.html】

<html>
<head>
<script>
function saveData() {
  opener.reSubmit();
  window.close();
}
</script>
</head>
<body>
<form>
  关闭窗口并刷新主窗口。
  <input type="button" value="save&quit" onclick="saveData()" />
</body>
</html>





最后需要提醒下,我看你页面的提交似乎用的是 function queryData() 这个函数,那么可能最终你自己的弹出窗口只需要:
opener.queryData();
window.close();

#17


引用 16 楼  的回复:
你先试试这个最简单的例子,掌握原理,然后再修改你自己的源程序,否则容易越改越乱。

总共两个页面:
main.html 主页面,带表单提交。
pop.html 弹出页面,点击按钮时提交主页面并关闭自己。

为了演示效果,在程序中对输入框自动填入了随机数,这样你通过看浏览器的地址栏URL变化,就可以知道确实提交了。

【main.html】

HTML code


<ht……

opener.queryData();
window.close();
这个我早就试过了 不行,刷新父页面的时候,父页面会弹出重复刷新对话框!这个问题是eos框架上写的程序,这个是项目优化,先不处理了!谢了

#18


引用 16 楼  的回复:
你先试试这个最简单的例子,掌握原理,然后再修改你自己的源程序,否则容易越改越乱。

总共两个页面:
main.html 主页面,带表单提交。
pop.html 弹出页面,点击按钮时提交主页面并关闭自己。

为了演示效果,在程序中对输入框自动填入了随机数,这样你通过看浏览器的地址栏URL变化,就可以知道确实提交了。

【main.html】

HTML code


<ht……

两个页面不行的,我想的是传个参数待到第二个页面,然后通过Action调用页面查询方法,点击保存刷新前一个页面的,可是eos框架没有Action这一层,应该是我还不熟悉这个框架

#19


我常用的办法就是子页面点击刷新父页面然后到action之后重新请求一下父页面,不就等于是刷新了吗

#20


引用 19 楼  的回复:
我常用的办法就是子页面点击刷新父页面然后到action之后重新请求一下父页面,不就等于是刷新了吗
ijingg 

嗯  谢了 这个方法 明白,但是eos框架我还正搞不明白,问题解决了 谢了

#1


刷新父页面时不可以跳出Windows自带的重新刷新小窗口  谢了 各位

#2


没人帮忙吗?谢谢各位 本人菜鸟一个 刚学 JAVA

#3


人呢?谢谢大神们

#4


如果父页面提交过表单,那么用reload()肯定会带出那个浏览器提示窗口的,因为这是重复提交。


建议合适的做法是,在子页面操作父页面的那个 提交按钮,比如:
var btnSubmit = document.getElementById("xxxooo"); // 查找该按钮
btnSubmit.submit(); // 触发提交动作

#5


引用 4 楼  的回复:
如果父页面提交过表单,那么用reload()肯定会带出那个浏览器提示窗口的,因为这是重复提交。


建议合适的做法是,在子页面操作父页面的那个 提交按钮,比如:
var btnSubmit = document.getElementById("xxxooo"); // 查找该按钮
btnSubmit.submit(); // 触发提交动作

哇!偶像 越狱主角!哈哈  不明白啊!菜鸟一个!

#6


刚一个好人回答了怎么又没人了?唉

#7


引用 4 楼  的回复:
如果父页面提交过表单,那么用reload()肯定会带出那个浏览器提示窗口的,因为这是重复提交。


建议合适的做法是,在子页面操作父页面的那个 提交按钮,比如:
var btnSubmit = document.getElementById("xxxooo"); // 查找该按钮
btnSubmit.submit(); // 触发提交动作


哥啊 帮忙解决下吧?

#8


在你的父窗口,写一个函数,比如:
function reSubmit() {
  var btnSubmit = document.getElementById("xxxooo"); // 查找该按钮
  btnSubmit.submit(); // 触发提交动作
}

提交按钮必须有id,名称跟函数中的必须保持一致:
<input id="xxxooo" type="submit" value="提交">



然后子窗口调用:
opener.reSubmit();

#9


引用 8 楼  的回复:
在你的父窗口,写一个函数,比如:
function reSubmit() {
  var btnSubmit = document.getElementById("xxxooo"); // 查找该按钮
  btnSubmit.submit(); // 触发提交动作
}

提交按钮必须有id,名称跟函数中的必须保持一致:
<input id="xxxooo" type="submit"……


唉 郁闷啊 还是不行啊!

#10


该回复于2012-07-23 16:36:48被版主删除

#11


引用 10 楼  的回复:
学习学习 帮忙顶顶


谢谢  这个问题郁闷我两天了

#12


不行么?这是常用招数。

你的错误信息是啥?

#13


引用 12 楼  的回复:
不行么?这是常用招数。

你的错误信息是啥?


没报错误 就是不刷新父页面啊!我一楼写了子页面和父页面 代码了

#14


没错误信息,就是不刷新父页面,还要点一下父页面的查询才显示刚新增的那一条数据的

#15


引用 12 楼  的回复:
不行么?这是常用招数。

你的错误信息是啥?


没有错误信息的,就是没有刷新父页面,新增的那条数据需要点击父页面的查询才能显示

#16


你先试试这个最简单的例子,掌握原理,然后再修改你自己的源程序,否则容易越改越乱。

总共两个页面:
main.html 主页面,带表单提交。
pop.html 弹出页面,点击按钮时提交主页面并关闭自己。

为了演示效果,在程序中对输入框自动填入了随机数,这样你通过看浏览器的地址栏URL变化,就可以知道确实提交了。

【main.html】

<html>
<head>
<script>
function reSubmit() {
  var form = document.getElementById("xxxooo"); // 查找需要提交的表单
  form.submit(); // 触发提交动作
}
</script>
</head>
<body onload="document.getElementById('name').value=Math.random()">
<form id="xxxooo">
  姓名:<input id="name" type="text" name="name" value="123" />
  <br />
  <input type="submit" />
  <br />
  <input type="button" value="popup" onclick="window.open('pop.html');" />
</body>
</html>



【pop.html】

<html>
<head>
<script>
function saveData() {
  opener.reSubmit();
  window.close();
}
</script>
</head>
<body>
<form>
  关闭窗口并刷新主窗口。
  <input type="button" value="save&quit" onclick="saveData()" />
</body>
</html>





最后需要提醒下,我看你页面的提交似乎用的是 function queryData() 这个函数,那么可能最终你自己的弹出窗口只需要:
opener.queryData();
window.close();

#17


引用 16 楼  的回复:
你先试试这个最简单的例子,掌握原理,然后再修改你自己的源程序,否则容易越改越乱。

总共两个页面:
main.html 主页面,带表单提交。
pop.html 弹出页面,点击按钮时提交主页面并关闭自己。

为了演示效果,在程序中对输入框自动填入了随机数,这样你通过看浏览器的地址栏URL变化,就可以知道确实提交了。

【main.html】

HTML code


<ht……

opener.queryData();
window.close();
这个我早就试过了 不行,刷新父页面的时候,父页面会弹出重复刷新对话框!这个问题是eos框架上写的程序,这个是项目优化,先不处理了!谢了

#18


引用 16 楼  的回复:
你先试试这个最简单的例子,掌握原理,然后再修改你自己的源程序,否则容易越改越乱。

总共两个页面:
main.html 主页面,带表单提交。
pop.html 弹出页面,点击按钮时提交主页面并关闭自己。

为了演示效果,在程序中对输入框自动填入了随机数,这样你通过看浏览器的地址栏URL变化,就可以知道确实提交了。

【main.html】

HTML code


<ht……

两个页面不行的,我想的是传个参数待到第二个页面,然后通过Action调用页面查询方法,点击保存刷新前一个页面的,可是eos框架没有Action这一层,应该是我还不熟悉这个框架

#19


我常用的办法就是子页面点击刷新父页面然后到action之后重新请求一下父页面,不就等于是刷新了吗

#20


引用 19 楼  的回复:
我常用的办法就是子页面点击刷新父页面然后到action之后重新请求一下父页面,不就等于是刷新了吗
ijingg 

嗯  谢了 这个方法 明白,但是eos框架我还正搞不明白,问题解决了 谢了

#21