【问题标题】:Echoing data from an iframe to the parent page将数据从 iframe 回显到父页面
【发布时间】:2014-06-13 13:36:12
【问题描述】:

我有一个隐藏的 iframe,用于处理表单的提交。它是这样的:

<iframe name="foo" style="display:none;"></iframe>

所以,我想知道,是否有可能在需要在 iframe 内发生的事情之后,我可以使用 javascript 或其他东西在父页面上打印数据?谢谢

编辑:这是我的表单代码。

<form id="bar" name="bar" method="post" target="foo" action="include/database.php">
    <input type="text" name="betamount">
    <input type='text' name="multipler">
    <input type="checkbox" name="hilo" value="High" checked>
  <input type="submit" name="submit" value="Bet">
</form>
<iframe name="foo" style="display:none;"></iframe>

Database.php 在 iframe 中处理这些 POST 请求。现在,database.php 里面有这样一件事

$betamount = $_POST['betamount'];
$multiplier = $_POST['multiplier'];
$payout = (int)$betamount*(int)$multiplier;

我想要做的是,我想使用 AJAX 或其他东西来回显 index.php 上存在的 div 内的“支付”变量

【问题讨论】:

  • 你试过什么? PS:一个 iFrame 包含一个单独的 DOM。是的,您可以从父级访问 iFrame 的 DOM,反之亦然,但很可能大多数时候这不是您想要的。也许告诉我们您真正想要做什么,然后重新考虑您的方法。这对我来说听起来像是一个 X-Y 问题
  • @EliasVanOotegem 编辑了我的主要帖子
  • @user3733878:如果您使用的是 AJAX,为什么还要使用 iFrame?

标签: javascript php jquery iframe


【解决方案1】:

就我的回答而言,我假设您在服务器端执行的操作不能被简单的客户端操作(使用 javascript)替换。

如果您期望获得回报,为什么不直接使用 AJAX,而不使用 iframe?只需将数据发布到您的 php 页面,然后异步返回。

JsFiddle:http://jsfiddle.net/ericwu91/28U8n/

HTML 代码:

<input type="text" id="amount" name="betamount">
<input type='text' id="multiplier" name="multipler">
<input type="checkbox" name="hilo" value="High" checked>
<button onclick="submit();return false;">Submit</button>

JS代码:

var yourData = {multiplier:$("#multiplier").val(),betamount:$("#amount").val()};

$.post("yourUrl.php",yourData,function(result){
    //Success: Use the "result" parameter to retrieve the data returned from server
    alert(result);
});

我正在使用 jQuery 的 ajax post 方法。此处的文档:http://api.jquery.com/jquery.post/

这样做的好处是它完全按照您的意愿行事,但通过使用几乎原生的 javascript 属性(异步响应)来简化它。

编辑:我忘了放真正的 jsfiddle 链接......在我粘贴了所有 HTML 和 JS 代码之后,我意识到小提琴是多么无用,因为它根本不会返回任何响应...... xD

【讨论】:

  • 您好,谢谢,但这不是我想要的。我想要它就像我说的那样。这是出于安全目的
  • @user3733878 ,对不起,我不明白。在使用 AJAX 时,我能找到的唯一不安全因素是当您管理安全数据(例如密码)或存在跨域请求时。如果您仍想以这种方式使用它,则必须在父窗口中放置一个 javascript 侦听器,以便它在给定的时间段内检查响应,例如 10 毫秒。 ...我认为这是一种资源浪费。
  • 然后仅将其视为密码。它更像是银行应用程序。所以我需要安全的数据。我也将获得 SSL,但这也是必需的,对吧?
  • 不一定。如果您认为您的数据是敏感的,意味着恶意第三方无法使用您的应用程序读取,那么 HTTP 本身就是一个糟糕的路由。 Chrome 和 Firefox 有大量的开发工具来检索发布的数据。并且 iframe 将无济于事。如果你认为你的数据是敏感的,意味着它们不能被拦截修改,那么同域ajax请求就和post-到 iframe 一个。请求/响应不会离开您的域,因此不会破坏 SSL 隧道。
  • 同域ajax请求?你能给我一个例子吗? @EricWu
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-09
  • 2015-06-19
  • 2011-01-06
  • 1970-01-01
相关资源
最近更新 更多