如何使用 javascript 或 JQuery 从不可见的 iframe 中获取隐藏字段值

Posted

技术标签:

【中文标题】如何使用 javascript 或 JQuery 从不可见的 iframe 中获取隐藏字段值【英文标题】:How to get hidden field value from invisible iframe using javascript or JQuery 【发布时间】:2014-03-16 02:36:11 【问题描述】:

好的,现在是上午 01:16,我无法解决这个简单的问题。 我使用不可见的 iframe 上传照片并将一些文本发送到数据库。 iframe 指向 upload.php 并返回带有 insert_id 的隐藏文本字段(数据库中最后一行的 id) - 我需要此信息用于其他功能。

这是我的 iframe:

 <iframe name="image_upload_frame" id="image_upload_frame"   style="visibility: hidden">

一开始是空的,但是上传图片后有这个html

 echo '<img src="'.$sImage.'" />';
     echo '<input type="hidden" id="session_id" value="'.$wpdb->insert_id.'" />';

这是我获取会话的 javascript)id 值:

var row_id = $("#image_upload_frame").contents().find("#session_id");
  alert(row_id.val());

它不起作用。调试器什么也没说 - 它只是停止,没有错误,没有通知。

有人可以帮忙吗?我想听听其他选项如何将数据从 iframe 传递到主窗口。

谢谢,

【问题讨论】:

你的javascript什么时候触发?在您创建隐藏 iframe 或该 iframe 的页面加载事件之后立即?如果它在 iframe 准备好之前触发,$("#image_upload_frame").contents().find("#session_id") 将不会得到任何结果。 “好吧,现在是上午 01:16,我无法解决这个简单的问题。” - 睡一觉,明天早上你可能会带着解决方案醒来,喝完第一杯咖啡和早餐后;它有一个新的开始;-) 我注意到的一件事是您“似乎”在使用会话。我可能会为您提供解决方案,但我需要查看更多代码。如果你不使用会话,那么这可能是一个解决方案,它也适用于 JS;在一定程度上。 【参考方案1】:

如果我没有假设错,你的 html 是这样的:

<html>
<body>
    <iframe id="hidden_iframe" name="hidden_iframe" style="display: none"></iframe>
    <form method="post" target="hidden_iframe" action="./test1.php" encrypt="multipart/form-data">
        <input type="file" name="file_upload" />
        <input type="submit" value="submit" />
    </form>
</body>

我的想法是在你的服务器端,你编写一个javascript代码来调用你客户端的javascript(实际上是iframe调用主窗口)。所以你的客户端代码应该是这样的:

<html>
<body>
    <iframe id="hidden_iframe" name="hidden_iframe" style="display: none"></iframe>
    <form method="post" target="hidden_iframe" action="./test1.php" encrypt="multipart/form-data">
        <input type="file" name="file_upload" />
        <input type="submit" value="submit" />
    </form>
    <script>
    function callFromServerSide(params)
        alert(params);
            
    </script>
</body>

你的服务器端应该是这样的(在我的例子中是 test1.php):

<?php
$last_insert_id=100;
echo "
<script>
window.top.callFromServerSide('".$last_insert_id."');                    
</script>";
?>

玩得开心..

【讨论】:

以上是关于如何使用 javascript 或 JQuery 从不可见的 iframe 中获取隐藏字段值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JavaScript 或 jQuery 更改数组内对象的值?

如何使用 jquery 或 javascript 删除索引处的行? [复制]

如何使用 jQuery 或 JavaScript 设置底边距

如何使用 PHP 或 JavaScript/jQuery 禁用地址栏?

如何防止使用 jQuery 或 Javascript 进行双重提交?

当您使用 javascript 或 jquery 将鼠标悬停时,如何使图像或按钮发光?