【问题标题】:How can form output sent to the same page be used in an iframe?如何在 iframe 中使用发送到同一页面的表单输出?
【发布时间】:2015-04-27 02:06:06
【问题描述】:

我有一个包含 iframe 的页面和一个针对同一页面(在 iframe 之外)的表单。表单的输出似乎在 iframe 中不可见。我现在使用的解决方法是在 iframe 之外获取 $_POST 表单输出,将其解析为变量(如果尚未发送表单,则使用一些默认值),然后使用 iframe 定义中的变量。然后在 iframe 中,我将这些值解析为 $_GET。 iframe 定义如下所示:

echo '<iframe src="foo.php?a='.$a.'&b='.$b.'" >';

这是最佳解决方案,还是通过 php 提供更优雅的解决方案?

编辑:我尝试将表单目标设置为 iframe 并将操作设置为相应页面,但似乎不起作用;我会尝试进一步检查它。我是 JavaScript 和 AJAX 的新手,在我网站的其他地方,我很少使用 JavaScript,也没有 AJAX。我将检查使用 AJAX 的解决方案,但我更喜欢使用 php。

【问题讨论】:

  • 如果您想从表单获取输入到 iframe 中,那么您可以使用 ajax 将 'action' 属性设置为 iframe url 并引用 iframe
  • 输出缓冲可能是答案?
  • @RamRaider:感谢您的提示,这对我来说是新的。我试过了,但是在页面正文(用于主页和 iframe)之前简单地添加 ob_start() 和 ob_end_flush() 不起作用。但我可能很容易误解了一些东西。

标签: php html forms iframe


【解决方案1】:

这有帮助吗?使用 php 会话。它也可以在 JavaScript 中完成,但是由于您似乎对 php 很感兴趣,所以就在这里。在“index.php”中

<?php
session_start();
$_SESSION["name"] = isset($_GET['myName'])?$_GET['myName']:"";
?>

<form name="MyForm" action="" method="GET">  
<input type="text" name="myName"/>
<input type="submit" />
</form>  
<iframe src="iframe.php" name="myIframe"></iframe>

然后在“iframe.php”中

<?php
session_start();
echo $_SESSION["name"];
?>

【讨论】:

  • 或 $_POST 而不是 $_GET。这与我已经做的非常相似。 Session 是超全球性的,这可能是一个优势,也可能不是,在我的情况下它是。最初我计划只将 iframe 中生成的派生变量放入会话中,但这看起来比将变量作为链接的一部分传递更安全,并且值得在第一次使用后清空这些值,就像你做的那样。 +1;我会在接受之前等待其他答案,因为其他人的 cmets 承诺会更复杂。
  • 不确定他们如何通过输出缓冲来实现这一点,因为缓冲区总是在每个脚本结束时清空,但如果他们找到了一种方法,我很乐意看到它。使用 javascript 你可以使用 contentWindow.parent.myVariable 相当简单的方法
  • 没有其他答案,所以我希望那个人在谈论输出缓冲,尽管这只是同步问题。似乎并非如此。但是,我接受这个答案。
猜你喜欢
  • 2019-10-03
  • 2015-08-23
  • 2021-11-02
  • 1970-01-01
  • 2011-07-05
  • 2017-05-22
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多