jQuery PHP iFrame文件上传返回数据错误

时间:2014-10-27 19:46:43

标签: php jquery iframe

我使用jQuery + PHP通过隐藏的iFrame上传文件。 我有它工作,我也有它上传多个文件。

要点: 我有一个MAIN / parent,我们的用户将使用它来提交正常的表单输入数据.. 我在MAIN表单下有第二个表单,用于上传任何文件。

当用户上传一些图片时..我返回一些数据(错误列表..或成功上传的文件列表返回页面)..所以当提交MAIN /父表单时,这个插入的数据将会去以及主表单数据(保存到数据库)

这是我的问题...虽然我可以将一些简单的反馈添加回页面(使用javascript来定位<feedback></feedback>元素。我无法在MAIN表单中插入任何新元素(如隐藏我认为我有一个jQuery追加/查找语法错误或路径/范围问题。

将文档结构放入透视图中:

结构:(简化一点)

<div id="newMessage" style="width:100%;">

    <!-- MAIN/Parent form -->
    <form id="newMessage_form" name="newMessage_form" method="post" action="<?= $_SERVER['PHP_SELF']?>?mode=submit" onsubmit="return chkFrm(this)">

        <table id="newMessage_table" width="100%" cellspacing="0" cellpadding="4" style="border:0px solid; border-color:#ff0000;">
            <tr>
                <td valign="top">* Item Name:<br>
                </td>
            </tr>

            <tr>
                <td valign="top">
                    * Year:<br>                     
                    * Month:<br>                        
                    * Date:<br>                     
                </td>
            </tr>               

            <tr>
                <td valign="top">* Message:<br>
                </td>
            </tr>


        </table>                    
        <div style="text-align:center; padding-bottom:20px;padding-top:10px;">
            <input type="Submit" name="submit_btn" id="submit_btn" value="Submit" style="width:100px;">
        </div>

    </form>

    <div id="uploadContainer" style="margin-top:-40px;">

        <div id="feedback"></div>

        <div id="hidden_test"></div><!-- added to test jQuery return since I couldnt successfully target the parent form -->

        <iframe name="upload_iframe" src="" style="display:none;"></iframe>

        <!-- file upload submission form -->
        <form method="post" enctype="multipart/form-data" action="handler.php" target="upload_iframe">
            <table id="uploads_table" width="100%" cellspacing="0" cellpadding="4" style="border:0px solid; border-color:#ff0000;">
                <tr>
                    <td id="uploads">                   
                        <!-- hidden until at least 1 file is added -->
                        <div id="moreUploads" style="display:none; margin:5px 0 10px 0;">
                            <a href="javascript:void(0);" id="attachMore">Add another file</a>
                        </div>

                        <div id="uploadContainer">
                            <input type="file" id="file1" name="file[]"><br><br>
                        </div>
                        <!-- new/dynamically created browse/select buttons go here -->
                        <div id="moreImageUpload"></div>
                        <div id="upload_btn" style="margin:10px 0 0 0;">
                            <input type="Submit" name="upload_btn" id="upload_btn" value="Upload All" style="width:100px;">
                        </div>
                    </td>
                </tr>
            </table>
        </form>
    </div>

</div>

在我的php文件uploade处理程序脚本..(handler.php)一切正常,当我试图回显并进入MAIN /父表单(作为隐藏输入字段)时,exepct

echo '<script>
    //works general 'feedback' node
    parent.document.getElementById("feedback").innerHTML="' . addslashes($name) . $returnerror .'";

    //doesnt work 
    $(this).parent("#hidden_test").append("<input type=\"file\" />");

    //also not working
    $(this).parent().parent("#newMessage_form").append("<input type=\"file\" />");

</script>';

有人可以帮我解决我的返回jQuery定位/路径问题吗?

尝试添加到此元素:#hidden_test只是一个测试。 (看看我是否有路径问题)

我真的需要将新的(动态)元素添加到:#newMessage_form

更新:当我尝试使用FireBug查看源代码时。 (看看我是否在DOM的任何地方获取了注入的元素..

我发现了一个错误:

ReferenceError: $ is not defined
$(this).parent("#hidden_test").append("<input type=\"file\" />");

但我的其他jQuery东西工作正常(在主文件中)..

并且常规的旧javascript也正常执行?我是否需要将jQuery lib包含到我的hanlder.php文件/脚本中?

0 个答案:

没有答案