【问题标题】:Get variable from iframe after form is submit to it?表单提交后从 iframe 获取变量?
【发布时间】:2012-04-05 07:45:56
【问题描述】:
$(function() {
    $(".preview").click(function() {
        $('#image').wrap('<form action="/index/upload.php" method="post" enctype="multipart/form-data" id="imageform" target="imageupload" />');
        $('#imageform').submit();
        $('#image').unwrap();
        var image = $('#imageupload').filename;
        return false;
    });
});

<iframe style="display: none;" name="imageupload" id="imageupload"></iframe>
<input type="file" id="image" name="image">
<input type="button" value="Preview" class="preview">

在上面的代码中,图像提交到服务器后,它在 iframe 中创建了一个变量,供我检索,其中包含上传的图像的文件名。我遇到的问题是,当检索文件名时,jQuery 的 .submit() 函数在提交表单时没有任何回调,因此在上传图像时,我的代码尝试在文件名不存在时获取文件名。有谁知道我可以解决这个问题的方法?

【问题讨论】:

  • 这是您的实际代码吗?看起来图像的输入在 iframe 之外,而不是在其中。请务必发布真实代码,这样我们就不会花时间解决不真实的问题。 :)
  • 这是我的真实代码,图像正在提交到 iframe 进行处理。 iframe 将文件保存在服务器上,并在 iframe 中创建一个包含其文件名的变量。我需要从 iframe 中检索文件名。
  • 您确定 target 属性将针对 iframe 吗?我今天刚读到,传递给“目标”的任何名称都用作新窗口的标题,单击的任何新链接都将替换该目标。它没有提到针对 iframe 的内容。也许你知道一些我不知道的事情,但你应该仔细检查以防万一:)祝你好运!
  • 你每天都能学到新东西,哇。查看此链接,它可能会对您有所帮助:stackoverflow.com/q/168455/552792
  • 谢谢,但我已经将表单提交到 iframe 我需要从中取回数据。

标签: jquery forms iframe submit


【解决方案1】:

我发现 iframe 本身有一个 onload 事件,因此我能够在提交到 iframe 后触发此事件,并且在文件上传后代码继续执行。

$(function() {
   $(".preview").click(function() {
       $('#image').wrap('<form action="/index/upload.php" method="post" enctype="multipart/form-data" id="imageform" target="imageupload" />');
        $('#imageupload').attr('onload', 'preview()');
        $('#imageform').submit();
        $('#image').unwrap();
        return false;
   });
});
function preview() {
    var image = $('#imageupload').contents().find('#filename').html();
}


<iframe style="display: none;" onload="" name="imageupload" id="imageupload"></iframe>
<input type="file" id="image" name="image">
<input type="button" value="Preview" class="preview">

【讨论】:

  • +1 - 很好地解决了你自己的问题!您可以通过单击答案左侧的复选框将其标记为已接受/最佳答案。这将显示为对遇到相同问题的其他人的参考。 :)
  • 会,但由于我的声望不到 100,我无法在 24 小时内将自己的帖子标记为答案。
  • 哦,对了。忘了那个。好吧,是时候去找一些你可以回答的问题了,这样你就可以超过 100 个阈值。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多