将数据发布到隐藏的 iframe,然后在同一页面中显示,无需重新加载

Posted

技术标签:

【中文标题】将数据发布到隐藏的 iframe,然后在同一页面中显示,无需重新加载【英文标题】:Post data to hidden iframe then show it in the same page wtihout reload 【发布时间】:2017-05-31 18:59:13 【问题描述】:

我是 jQuery、ajax 和 javascript 的新手。我需要一点帮助来了解如何将数据发布到隐藏的iframe,然后使用相同的buttondisplay

这是我迄今为止尝试过的:

<form id="testform" name="testform" class="form-horizontal" action="testing/index.php" method="post" target="mydata">
    <div class="form-group">
        <div class="col-sm-6 col-sm-offset-3">
            <input class="form-control" placeholder="please enter test name" name="test-input">
        </div>
    </div>
    <div class="form-group">
        <div class="col-sm-12">
            <button type="submit" class="btn btn-primary" id="testit">I want to test!</button>
        </div>
    </div>
</form>
<div class="row">
    <div class="col-md-12" id="target">
        <script>
            $(document).ready(function() 

                $('#testform').on('submit', function() 
                    $("#target").show();
                );
                $("#target").hide();
            );

            $("#target").html('<object name="mydata" data="http://testurl.com/testing"></object>');

        </script>
    </div>
</div>

感谢您的帮助。

【问题讨论】:

【参考方案1】:

如果你真的需要这样做,你应该做的是:

<form id="testform" name="testform" class="form-horizontal" action="testing/index.php" method="post" target="mydata">
    <div class="form-group">
        <div class="col-sm-6 col-sm-offset-3">
            <input class="form-control" placeholder="please enter test name" name="test-input">
        </div>
    </div>
    <div class="form-group">
        <div class="col-sm-12">
            <button type="submit" class="btn btn-primary" id="testit">I want to test!</button>
        </div>
    </div>
</form>
<iframe id="mydata" style="border:0; height:0;"></iframe>
<script>
    $(document).ready(function() 
        $('#testform').on('submit', function() 
            $("#mydata").css("height", 300);
        );
    );
</script>

我建议你看看 jQuery 的 $.post() documentation 和 .serialize() documentation。你可以改成这样:

<form id="testform" name="testform" class="form-horizontal">
    <div class="form-group">
        <div class="col-sm-6 col-sm-offset-3">
            <input class="form-control" placeholder="please enter test name" name="test-input">
        </div>
    </div>
    <div class="form-group">
        <div class="col-sm-12">
            <button type="submit" class="btn btn-primary" id="testit">I want to test!</button>
        </div>
    </div>
</form>
<div id="succesResult"></div>
<script>
    $(document).read((function()
        $('#testform').on('submit', function() 
            var data = $( this ).serialize();
            $.post("http://target.url", data, function(resultFromServer)
                //success callback
                $("#succesResult").html(resultFromServer); <--result could be html 
            )
        );    
    
</script>

【讨论】:

以上是关于将数据发布到隐藏的 iframe,然后在同一页面中显示,无需重新加载的主要内容,如果未能解决你的问题,请参考以下文章

在提交 IFRAME 表单之前,将父 url 保存到隐藏字段

如何将表单数据发送到同一网页中的 iframe src

隐藏 iframe 上的水平滚动条?

如何在不重新加载的情况下在同一页面上提交文件[重复]

怎么将iframe框设置自适应

将iframe的内容高度赋值给iframe本身高度,并隐藏iframe里面的垂直滚动条,使iframe和父页面看成是一个整体页面