`
aokunsang
  • 浏览: 815288 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

showModalDialog,子页面修改信息,同时父页面刷新到最新数据

阅读更多

今天搞了2-3个钟头终于搞定了一个棘手的问题,其实也不是很难只是自己对js的了解有限,以至于没有发现这样的解决办法、

 

有一个页面a.action转向a.jsp,另一个子页面b.action转向b.jsp。
假定:a.jsp有N列数据,可以修改,删除、我点击某一列修改按钮触发事件edit();

function edit(){
      window.showModalDialog("b.action","","dialogWidth:100px;dialogHeight:200px;scroll:yes;status:no");
}

 

 这里面存在两个问题:

   1、缓存问题
          如果按照上面那样写的话,你会发现打开b.jsp,每次显示的数据都是一样的,尽管你修改成功了。这是缓存问题
      网上推荐的最简单解决办法:传递一个唯一的参数值,第一个参数可改为:"b.action?temp="+new Date()。
   2、传值问题
          众所周知,第二个参数是向子页面传递参数的。网上有人说,子页面使用window.dialogArguments,就相当于使用父页面的window一样。这句话是在传递了window对象的基础上的。如果你想在子页面上操作父页面的函数function a(){},那么你需要把第二个参数传递一个window.window或者window(一个window对象),那么你在子页面上就可以使用window.dialogArguments.a()调用a函数;

 

function edit(){
       window.showModalDialog("b.action?temp="+new Date(),window,"dialogWidth:100px;dialogHeight:200px;scroll:yes;status:no");
}

 

分享到:
评论
9 楼 飞语001 2010-10-01  
楼主对子页面的处理方式很奇怪,其实可以用DIV处理弹出页面,挺简单,如二楼说的,用返回值的方式处理也可以,没必要传window参数,如果有两层子页面,那你如何处理了?
8 楼 Inthespring 2010-09-25  
搞复杂了!

父页:
function edit(){  
      var str = window.showModalDialog("b.action","","dialogWidth:100px;dialogHeight:200px;scroll:yes;status:no");  


子页:
function rs(){
   window.returnValue='要返回的值';
   window.close();
}
7 楼 aokunsang 2010-09-25  
qinglintan 写道
好怪哦,为什么不使用returnValue:http://qinglintan.iteye.com

学习了、
6 楼 aokunsang 2010-09-25  
need_faith 写道
“1、缓存问题
          如果按照上面那样写的话,你会发现打开b.jsp,每次显示的数据都是一样的,尽管你修改成功了。这是缓存问题
      网上推荐的最简单解决办法:传递一个唯一的参数值,第一个参数可改为:"b.action?temp="+new Date()。”
不明白为什么有这样的问题,页面是否缓存,可以控制的,在b.jsp中增加
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
不可以防止缓存吗?

呵呵 貌似我用词不对,这应该是“窗口的缓存问题”(应该这样说吧),不知道为什么,我修改完子页面的内容,总是不能看到最新修改。  Google说是窗口的缓存,传递一个唯一标示就ok了、
5 楼 yidwo 2010-09-25  
怎么不用层呢。。还是这些感觉效果和性能上………… 很久就不这么用了。。。 是吧?!
4 楼 need_faith 2010-09-25  
“2、传值问题
          众所周知,第二个参数是向子页面传递参数的。网上有人说,子页面使用window.dialogArguments,就相当于使用父页面的window一样。这句话是在传递了window对象的基础上的。如果你想在子页面上操作父页面的函数function a(){},那么你需要把第二个参数传递一个window.window或者window(一个window对象),那么你在子页面上就可以使用window.dialogArguments.a()调用a函数;”

建议采用楼上两位的方法,子窗口将处理结果放进returnValue中,父窗口读取(win = window.showModalDialog()) win.returnValue,进行下一步程序流转比较合理,要不不好理解调用关系
3 楼 need_faith 2010-09-25  
“1、缓存问题
          如果按照上面那样写的话,你会发现打开b.jsp,每次显示的数据都是一样的,尽管你修改成功了。这是缓存问题
      网上推荐的最简单解决办法:传递一个唯一的参数值,第一个参数可改为:"b.action?temp="+new Date()。”
不明白为什么有这样的问题,页面是否缓存,可以控制的,在b.jsp中增加
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
不可以防止缓存吗?
2 楼 qinglintan 2010-09-24  
好怪哦,为什么不使用returnValue:http://qinglintan.iteye.com
1 楼 xyztony1985 2010-09-17  
建议可以的话,采用父页面监听子页面返回值,再进行处理的方式(更OO);
而不是子页面直接控制父页面。

相关推荐

    javascript中showModalDialog子页面值赋给父页面

    在这个场景中,我们需要探讨如何在子页面通过`showModalDialog`将数据返回给父页面,特别是当这些数据是以JSON格式存储时。 首先,让我们理解`showModalDialog`的基本用法。`window.showModalDialog(url, arguments...

    showModalDialog 弹出窗口关闭不刷新父窗口最终实现了

    ### showModalDialog 弹出窗口关闭不刷新父窗口的实现方法 #### 一、背景介绍 在Web开发过程中,经常会遇到需要使用弹出窗口显示额外信息或进行特定操作的情况。`showModalDialog` 是一个非常实用的功能,允许创建...

    open 关闭子页面刷新父页面

    根据给定的代码片段和描述,“open关闭子页面刷新父页面”这一主题涉及到的关键知识点主要包括:使用JavaScript打开新窗口、父窗口与子窗口之间的通信,以及通过特定事件触发父窗口的刷新。 ### 使用JavaScript打开...

    关于struts2里用javascript刷新window.showModalDialog的父页面

    ### 关于Struts2中利用JavaScript刷新window.showModalDialog的父页面 在Web开发中,尤其是在使用Struts2框架进行项目开发时,我们经常会遇到需要弹出模态对话框(modal dialog)的需求。其中一个常见的场景就是...

    showModalDialog使用例子,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时候返回值到父窗口

    但是,由于同源策略的限制,只有当子窗口与父窗口位于同一域时,才能修改父窗口的值。例如,子窗口可以这样设置父窗口的变量: ```javascript window.opener.someVariable = "新值"; ``` **子窗口关闭时返回值到父...

    ShowModalDialog父窗体向子窗体传值

    总的来说,`showModalDialog`和`showModelessDialog`是JavaScript中用于创建弹出式对话框的两种方式,它们提供了在父窗口与子窗口之间传递数据的机制,同时也能够定制对话框的外观和行为。在实际应用中,根据需求...

    javascript刷新父页面

    ### JavaScript 刷新父页面知识点详解 #### 一、概述 在网页开发中,有时我们需要从一个弹出的子窗口(通常是由 `window.open` 或 `window.showModalDialog` 方法打开的)来控制父窗口的行为,比如刷新父窗口的...

    子窗口刷新父窗口总结

    子窗口刷新父窗口是一个常见的需求,涉及到浏览器窗口间通信的技巧。无论是使用`window.open()`、`window.showModalDialog()`还是jQuery,关键在于理解窗口对象的生命周期及相互之间的引用关系。通过适当的编程策略...

    showModalDialog刷新窗口的例子

    当我们谈论刷新窗口,我们通常指的是重新加载当前页面以获取最新的数据或更新。在`showModalDialog`的上下文中,刷新窗口可能意味着关闭当前对话框后主窗口的刷新。这可以通过在对话框中执行某些操作(如点击“确定...

    javascript刷新父页面的各种方法汇总

    在JavaScript中,有时我们需要刷新父页面,以更新其内容或者数据。这可能是因为父页面包含一个框架或子页面,而我们需要在用户操作后更新整个父页面的状态。以下是一些主要的刷新父页面的方法: 1. **通过iframe...

    刷新父窗口的多种方法

    这种方法非常常见,例如,在用户完成了一个表单填写并提交后,我们可能希望关闭这个弹出窗口并刷新主页面,以便用户能够看到最新的数据。 **JavaScript代码示例:** ```javascript // 子窗口中的JS代码 window....

    父子页面相互调用总结

    例如,子页面可以修改父页面的某个变量或者调用父页面的函数。这种方式灵活且广泛适用,但需注意跨域安全问题。 `showModalDialog`与`showModelessDialog`类似,也是IE特有功能,用于打开一个模态对话框,即用户...

    showModalDialog open弹出子窗口操作parent、opener父窗口及跨域处理

    1&gt; window.showModalDialog()采用JS原理实现,同时父窗口不可操作,window.open()采用新创建一个窗口,同时父窗口可操作; 2&gt; 父窗口与子窗口传递值的方式也有所不同,在子窗口中操作父窗口也语法也不同,分别为var...

    javascript实现从子页与父页传递参数

    `showModalDialog()`的返回值就是子页面传递给父页面的数据。需要注意的是,这个方法在现代浏览器中的支持情况并不理想,可能需要寻找替代方案。 5. **使用`postMessage` API**:这是一种更现代的跨窗口通信方式,...

    window.showModalDialog打开跨域的页面并取到返回值

    主页面用window.showModalDialog的时候,如果直接打开其它系统的页面,这时候别人的页面在window.returnValue=1;这样返回值的时候,主页面是取不到返回值的,原因就是因为跨域了.

    showModalDialog参数使用详解

    本篇文章将深入探讨`showModalDialog`的参数使用,以及如何在子父窗口之间传递数据。 `showModalDialog`函数的基本语法如下: ```javascript window.showModalDialog(url, [startNode], [features]); ``` - `url`...

    showModalDialog

    2. `startValue`: 可选参数,用于传递初始数据到新打开的对话框。这可以是一个对象,其属性会被新窗口的全局变量访问。 3. `features`: 可选参数,定义对话框的样式和行为。例如,宽度、高度、位置、是否可调整大小...

    js弹出一个新页面并获得弹出页面的值

    根据提供的文件信息,本文将详细解释如何使用JavaScript在父页面中弹出一个新的窗口,并从这个新弹出的窗口中获取数据。此技术常用于需要在当前页面与另一个页面之间进行数据交互的应用场景。 ### 一、理解弹窗原理...

    JS中showModalDialog关闭子窗口刷新主窗口用法详解

    本文实例讲述了JS中showModalDialog关闭子窗口刷新主窗口用法。分享给大家供大家参考,具体如下: 网上找了好长时间 大都是window.opener.location.reload(),等等 都不是我想要的 最后终于发现了一个 想知道的就往下...

    js(javascript)子窗口和父窗口交互

    根据题目提供的信息,本文将详细介绍两种实现父窗口与子窗口交互的方法。 #### 一、通过 `window.open()` 方法实现交互 `window.open()` 是一种常见的创建新窗口的方式。通过这种方式可以灵活地控制新打开窗口的...

Global site tag (gtag.js) - Google Analytics