我使用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文件/脚本中?