代码之家  ›  专栏  ›  技术社区  ›  stormdrain

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

  •  2
  • stormdrain  · 技术社区  · 16 年前

    如果我尝试一些简单的事情,比如向表单发布输入/文本,什么也不会发生(处理程序设置为回显$_post)。我尝试过设置iframe名称/id等,并将表单目标设置为相应的iframe名称/id。当我点击提交时,iframe就像一个虚拟的一样。WTF我做错了吗?

    谢谢。

    <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>
    

        <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 回复  |  直到 14 年前
        1
  •  6
  •   Cesar    16 年前

    很好,我错了。我发现了问题。 首先使用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>
    

    <?php
    var_dump($_POST);
    ?>
    

    你的问题是html语法。这行得通。

        2
  •  1
  •   stormdrain    16 年前

    显然,一个div或愚蠢的fieldset标签不合适会阻止它工作。在打扰你们这些好人之前,我真的得开始检查我的代码了。

    不管怎样,还是谢谢。

        3
  •  0
  •   R0b0tn1k    16 年前

    你的逻辑似乎有效,你能设置一个测试页面吗?

        4
  •  0
  •   James Black    16 年前

    此页面将执行您想要的操作,因此您可能想浏览一下,看看与您已经在做的操作有什么不同: http://www.anyexample.com/programming/php/php_ajax_example__asynchronous_file_upload.xml

    html中的操作是执行处理的php文件吗?

        5
  •  0
  •   Greg    16 年前

    我认为这是因为这两条线:

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

    你要关门了 <div> 没有打开标签。这将使Firefox关闭 <form> 早期-您的提交按钮不在表单中,这就是它不起作用的原因。

    推荐文章