在 iframe 中提交后重新加载页面(javascript/jquery)

Posted

技术标签:

【中文标题】在 iframe 中提交后重新加载页面(javascript/jquery)【英文标题】:Reload page after submit in iframe (javascript/jquery) 【发布时间】:2011-08-07 09:54:06 【问题描述】:

我有一个带有 iframe 的页面。在 iframe 中有一个提交按钮。当我单击提交按钮时,我希望更新父窗口。 这是我到目前为止所做的,并且可以正常工作(javascript位于父窗口中):

var myFrame = $('iframe');
myFrame.load(function() 
myFrame.contents().find('#publish').click(function() 

  myFrame.load(function() 
    location.reload();
  );

);
);

代码有效。但我发现没有必要重新加载 iframe。 有没有更好的方法来检测“提交”何时完成?

(我不能仅通过“onclick”重新加载页面或延迟任何延迟。我必须确保表单提交完成)

【问题讨论】:

要更新父窗口?或要重新加载的父窗口?更新是什么? 你到底是怎么解决这个问题的? 【参考方案1】:

假设 publish 是唯一的,您可以这样做:

$(document).ready(function()
  $('#publish').live('click', function(e)
     e.preventDefault();
     //Do whatever you want here
   );
);

注意live 将在运行时将偶数绑定到publish 链接。

【讨论】:

嗨 Naveed,你错过了“);”。但是我看不到这个功能将如何帮助我提交表单并重新加载页面。我想要一个函数来检测何时发送提交。【参考方案2】:

你可以让表单提交返回一个 js 块:

<html>
<script>
 window.parent.document.jQueryFunction();
</script>
</html>

或者,如果您对插件开放,您可以使用the jQuery Form Plugin 的 ajaxSubmit() 方法。

$myFrame.contents().find('form').ajaxForm(
  success: function() 
     // update parent
  
);

【讨论】:

【参考方案3】:
$("#publish").click(function() 
    $('#inputs').ajaxSubmit(
        success:function()
            //alert("Reload called");
            parent.location.reload();
        
    );
 );

这行得通。

【讨论】:

欢迎来到 SO。问题中没有具体提到 Ajax。也可以是标准的html表单提交。

以上是关于在 iframe 中提交后重新加载页面(javascript/jquery)的主要内容,如果未能解决你的问题,请参考以下文章

ajax iframe重新加载后图像不显示

如何在不重新加载的情况下在同一页面上提交文件[重复]

jquery load加载动态页面

如何在加载后强制 iFrame 重新加载

关闭图库后重新加载 iframe

如何从父文档中捕获 iframe 内部的刷新?