php - 在表单发布完成在目标上执行文件上传后从 iframe 获取数据

标签 php javascript html iframe

我有一个表单,当表单发布到 PHP 脚本时,它使用 target 属性来定位 iframe。这部分工作正常,但我需要根据 php 脚本将放入 iframe 的几个结果做一些事情。

我想做的是当 PHP 脚本完成发布时回显一些包含各种元素的隐藏输入字段,例如发布的状态、是否成功以及成功后的最终结果是什么发布。

但是,如果我这样做,它会将其放入 iframe 中,这样主网页将无法访问隐藏的输入字段。

主网页如何能够访问这些隐藏的输入字段,以便主网页可以执行某些操作,即在网页中制作一个 div 显示特定的错误消息或其他内容。

另一件事是,一旦我知道如何从隐藏的输入字段中获取数据,我怎么知道何时可以获取值。我在想,当通过 JavaScript document.forms["myform"].submit() 代码发布表单时,我可以执行一个 while 循环并检查另一个隐藏的输入字段状态是否为设置为完成,一旦它说完成,我就可以从隐藏的输入字段中获取值。

我不确定我建议的方式是否是正确的方式或是否正在做我想达到的目标,或者是否有更好的方法。

更新

我已经尝试了@lanzz 的建议,但似乎没有用。以下是我尝试过的。

$("iframe#image_upload_frame").on('load', function()
{
   var iframeBody = this.contentDocument.body;


   var data = $(iframeBody).find("#imageDirectory");
   alert("data: " + data);
});

下面是iframe的定义

<iframe id="image_upload_frame" name="image_upload_frame"></iframe>

我在 iframe 中的 php 脚本中回显了一个隐藏的输入字段。

echo '<input type="hidden" id="imageDirectory" value="'.$imageDirectory.'" />';

当我看到查看 iframe 源代码时, echo 确实有效,我可以看到隐藏的输入,但是,警报对话框永远不会显示,好像有什么东西不工作一样。谷歌浏览器开发控制台也没有报告任何错误。

最佳答案

如果我理解正确 - 您需要父窗口中 iframe 的值,一旦该值加载到 iframe 中。我会将 javascript 添加到调用父级并执行函数的 iframe。

在主框架中:

function incomingValue(val) {
   alert(val)
}

以及生成的 iframe 中的某处:

<script type="text/javascript">
 parent.incomingValue("Hello world");
</script>

假设两个帧源共享同一个域,这应该可以工作。

关于php - 在表单发布完成在目标上执行文件上传后从 iframe 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13077499/

相关文章:

javascript - AJAX 调用未获取 id 并将其发送到 php 文件

html - 将加速移动页面与 Bootstrap 结合使用

html - 如何在数据库字段中存储区域

javascript - 从 html anchor 元素传递窗口对象

php - 货币符号在电子邮件中无法正确显示

php - MySQL + PHP 中行之间的除法

javascript - 如何从innerHTML对象获取值?

javascript - 预编译模板中的 HandlebarsJS 空白

javascript - Laravel - 使用 Javascript 调用具有所需参数的路由

php - 如何在多个表中添加/编辑/管理相关数据