【问题标题】:How to reload a parent page when jQuery UI dialog is closed?jQuery UI 对话框关闭时如何重新加载父页面?
【发布时间】:2013-09-13 20:26:28
【问题描述】:

我在 stackoverflow 中搜索了这个问题,并看到了类似的问题(但不完全是我正在寻找的问题),但该解决方案似乎不起作用。我只是 jQuery 的新手,我需要你的帮助才能完成这项工作。 (交叉手指)

所以我有一个带有按钮的网页(例如 parentPage.html)。单击按钮时(执行 openItemPopup 函数),它会使用 jQuery UI 打开一个模式对话框。模态对话框“#contentWindow”的内容是不同的页面(例如modalDialog.html)。


function resetContent() {
$('#contentFrame').attr('src', '/images/ajax-loader.gif');
}

function closeContent() {
$('.ui-dialog-titlebar-close').click();
}

function openItemPopup(){

$('#contentWindow').dialog({width:980, modal: true,
        close: function(ev, ui) { resetContent(); }
});
}

在modalDialog.html中,当一个锚点被点击时,它会执行一些逻辑,它需要动态关闭模态对话框。有人告诉我使用这个,这已经在工作了:


              // refresh parent page before closing
              // doesn't work
              location.reload(true);

              // close the modal dialog
              window.top.closeContent();
              return false;
              window.location='javascript:void();';

我的问题是:我需要在关闭模式对话框之前刷新 parentPage.html。您在上面看到我尝试使用 location.reload(true);,但它重新加载模式对话框而不是 parentPage.html。我无法发布图片,但它显示 *“无效的 Web 应用程序会话”。*

我也试过 window.top.location.reload();它似乎工作。它重新加载 parentPage.html 并关闭模式对话框。

              // refresh parent page before closing
              // seems working but has error
              window.top.location.reload();

              // close the modal dialog
              window.top.closeContent();
              return false;
              window.location='javascript:void();';

但是,它说 “无效的 Web 应用程序会话。” -- 就像使用 location.reload(true); 时的情况一样。我不知道为什么会发生这种情况以及如何解决它。我什至不确定 window.top.location.reload 是否是正确的方法。

仅供参考:我正在尝试刷新 parentPage.html 以便能够从模式对话框中获取数据。之前,modalDialog.html 用作简单的 html 页面。列表和字段等数据从 modalDialog.html 正确返回到 parentPage.html。他们想将其转换为模式对话框以防止大量页面刷新。有人告诉我可以使用 AJAX,但工作量很大。此外,我不是它的主人。如果您有更好的建议,请随时告诉我!

我希望你能帮助我解决这个问题。提前谢谢!!!

【问题讨论】:

  • 试试location.reload(); w3schools.com/jsref/met_loc_reload.asp
  • location.reload();重新加载模式对话框而不是父页面。
  • 您的模态对话框是 iframe 吗?否则location.reload(); 真的应该做到这一点 - 之前已经使用 jquery colorbox 和 ajax 请求完成了它。编辑:用不同的方法添加了一个答案。
  • 是的,它是一个 iframe。嗯。如果有办法我可以告诉你。
  • 嗨,你有没有发现这个问题?

标签: jquery jquery-ui-dialog page-refresh


【解决方案1】:

在你的对话框中使用close: function (ev, ui) { window.location.reload() }

【讨论】:

    【解决方案2】:

    试试这个:在你的 parentPage.html 添加一个新函数:

    function reloadContent() {
        location.reload();
    }
    

    在您的 modalDialog.html 中通过以下方式调用该函数:

    parent.reloadContent();
    

    【讨论】:

    • 我尝试添加它。它刷新了父页面,但显示“无效的 Web 应用程序会话”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    相关资源
    最近更新 更多