通过帖子[文件上传]将表单数据提交到iframe

时间:2009-10-14 19:19:09

标签: php forms iframe post

UGH。

您好。

我有一张表格。我想知道如何/如果我可以将此表单提交给具有将处理文件上传/命名的页面的iFrame。

如果我尝试一些简单的事情,例如将输入/文本发布到表单,则不会发生任何事情(处理程序设置为回显$ _POST)。我试过设置iframe name / id et。人。并将表单目标设置为相应的iframe名称/ ID。当我点击提交时,iframe就像假人一样坐在那里。 WTF我做错了吗?

THX。

<form action="/clients/testAddTrans/<?=$clientID?>" id="reportEdit" class="EditName" method="POST" target="transFrame">
    <div class="inputDiv">
        <span class="inputLabel">Description:</span>
        <span class="textInput">
            <input type="text" id="transDesc" name="transDesc" value="" size="40" class=""/>
        </span>
    </div>
    <div class="inputDiv">
        <span class="inputLabel">Date:</span>
        <span class="textInput">
            <input type="text" id="date" name="transDate" value="" size="40" class=""/>
        </span>
    </div>
    <div class="inputDiv">
        <span class="inputLabel">File:</span>
        <span class="textInput">
            <input type="file" id="file" name="transFile" value="" size="40" class=""/>
        </span>
    </div>
    <input name="name_id" type="hidden" value="<?=$itemid?>" />
    <input type="submit" value="Submit" name="submit"/>
    <input type="button" class="secondaryAction" onclick="hideOverDiv()" value="Close"/>
    <div id="overDivNotice" class="overDivNotice" style="display:none"></div>
    <iframe action="/clients/testAddTrans/<?=$clid?>" id="transFrame" name="transFrame" style=""></iframe>
</form>

通过firebug生成的html:

    <div class="content" id="overDivContent"><div class="inputDivContainer">
  <fieldset class="inputOverDiv" id="tfa_Names">
 <legend><b>Add Transmittal:</b></legend>
  <div class="data"><form target="transFrame" method="POST" class="EditName" id="reportEdit" action="/clients/testAddTrans/fsdf1556"><div class="inputDiv"><span class="inputLabel">Description:</span><span class="textInput"><input type="text" class="" size="40" value="" name="transDesc" id="transDesc"/></span></div><div class="inputDiv"><span class="inputLabel">Date:</span><span class="textInput"><input type="text" class="" size="40" value="" name="transDate" id="date"/></span></div><div class="inputDiv"><span class="inputLabel">File:</span><span class="textInput"><input type="file" class="" size="40" value="" name="transFile" id="file"/></span></div><input type="hidden" value="121" name="name_id"/>
  </form><br/>
  <div align="center" class="actions" id="overDivActions">
   <input type="submit" name="submit" value="Submit"/>
   <input type="button" value="Close" onclick="hideOverDiv()" class="secondaryAction"/>
  </div>
  <div style="display: none;" class="overDivNotice" id="overDivNotice">
  </div></div>


  <iframe style="" name="transFrame" id="transFrame">tyh</iframe>
  </fieldset>
  </div></div>

我不知道为什么它会将</form>标记放在它的位置..它应该在iframe之后,但无论如何。那甚至重要吗? iframe应该在表单中吗?

5 个答案:

答案 0 :(得分:6)

很好,我错了..我发现了问题。 首先使用html写入html; 使用下面的代码:

代表'testSubmitiFrame.html':

    <form target="transFrame" method="POST" class="EditName" id="reportEdit" action="testSubmitiFrame.php">
<div class="content" id="overDivContent">
    <div class="inputDivContainer">
        <fieldset class="inputOverDiv" id="tfa_Names">
        <legend><b>Add Transmittal:</b></legend>
        <div class="data">
            <div class="inputDiv">
                <span class="inputLabel">Description:</span>
                <span class="textInput"><input type="text" class="" size="40" value="" name="transDesc" id="transDesc"/></span>
            </div>
            <div class="inputDiv">
                <span class="inputLabel">Date:</span>
                <span class="textInput"><input type="text" class="" size="40" value="" name="transDate" id="date"/></span>
            </div>
            <div class="inputDiv">
                <span class="inputLabel">File:</span>
                <span class="textInput"><input type="file" class="" size="40" value="" name="transFile" id="file"/></span>
            </div>
            <input type="hidden" value="121" name="name_id"/>
            <br/>
            <div align="center" class="actions" id="overDivActions">
                <input type="submit" name="submit" value="Submit"/>
                <input type="button" value="Close" onclick="hideOverDiv()" class="secondaryAction"/>
            </div>
            <div style="display: none;" class="overDivNotice" id="overDivNotice"></div>
        </div>
        </fieldset>
    </div>
</div>
</form>
<iframe style="" name="transFrame" id="transFrame">tyh</iframe>

代表'testSubmitiFrame.php':

<?php
var_dump($_POST);
?>

你的问题是html语法。这很有效。

答案 1 :(得分:1)

显然,div或愚蠢的fieldset标记不合适阻止了这个东西的工作。在打扰好人之前,我真的要开始检查我的代码。

非常感谢。

答案 2 :(得分:0)

您的逻辑显示有效,您可以设置测试页吗?

答案 3 :(得分:0)

此页面将执行您想要的操作,因此您可能需要查看它并查看可能与您正在执行的操作有何不同之处: http://www.anyexample.com/programming/php/php_ajax_example__asynchronous_file_upload.xml

html中的动作是否会进行处理的php文件?

答案 4 :(得分:0)

我认为这是因为这两行:

echo "</div>";
echo "</div><br>

您正在关闭<div>,没有开始标记。这使得Firefox提前关闭<form> - 您的提交按钮不在您的表单中,这就是为什么它不起作用。

iframe内部或外部的iframe位置无关紧要 - 只需确保HTML的其余部分有效且它应该有效。