Я использую jQuery + PHP для загрузки файлов через скрытый iFrame.
У меня это работает, и я работаю с загрузкой нескольких файлов, а также.
Резюме:
У меня есть ГЛАВНЫЙ / родитель, который пользователи будут использовать для отправки обычных данных формы с помощью ..
У меня есть вторая форма под этой ОСНОВНОЙ формой, которая используется только для загрузки любых файлов.
Когда пользователь загружает несколько изображений … Я возвращаю некоторые данные (либо список ошибок .., либо список успешно загруженных файлов обратно на страницу) .. поэтому, когда отправлена форма MAIN / родительская, эти вставленные данные будут идти вместе с данные основной формы (сохраняются в базе данных)
Вот моя проблема … в то время как я могу получить некоторую простую обратную связь, добавленную на страницу (используя javascript для <feedback></feedback>
элемент .. Я НЕ могу вставить какие-либо новые элементы в ГЛАВНУЮ форму (как скрытые поля) .. Я думаю, что у меня либо ошибка синтаксиса добавления / поиска 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 .. (handler.php) все работает, за исключением того, что я пытался вернуться назад и в элементы в MAIN / родительскую форму (как скрытые поля ввода)
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 или что-то в этом роде?
Задача ещё не решена.
Других решений пока нет …