Я использовал это, чтобы обработать форму с помощью AJAX и JQueryFormData пуст (в PHP)
$("#uploadBtn").click(function()
{
var formData = new FormData($('form')[0]); //--FormData here, problem line
$.ajax({
url: 'resources/ajax/ajax_upload_video.php',
type: 'POST',
xhr: function()
{
xhr = $.ajaxSettings.xhr();
if (xhr.upload)
{
xhr.upload.addEventListener('progress', progressHandlingFunction, false);
}
return xhr;
},
success: function(msg)
{
log(msg);
},
data: formData,
cache: false,
contentType: false,
processData: false
});
});
Она работает отлично. Я добавил вторую форму на странице (поиск сверху, загрузчик внизу)
Я понимаю, что $('form')[0]
возьмет первую форму на странице, поэтому, естественно, я изменил свой javascript на $('form')[1]
. Когда я делаю console.log на нем, это правильная форма.
Когда я нажимаю кнопку загрузки, но мой файл php говорит, что ничего не было опубликовано. Для простоты мой php-файл:
<?php
var_dump($_POST);
?>
Я получаю только пустой массив. Я даже дал форму, я хочу идентификатор и назвал его таким образом $('#uploadForm')
.
У меня есть один многопозиционный вход FILE, скрытое поле и поле ввода текста.
Что я делаю неправильно с объектом FormData
?
С одной стороны, я разрабатывал эту страницу локально с помощью WAMP и просто переносил ее на наш сервер CentOS, который находится в сети. Может ли это быть настройка PHP, которая не совпадает с моей локальной средой? Я не могу думать о том, что установка PHP будет иметь дело с POST
Загрузить Форма
<form id="videoUploadForm" method="post" enctype="multipart/form-data" class="upload-form modal-edit-form">
<div class="modal-body">
<p>
<div align="center" id="fileSelect">
<input type="hidden" value="video" name="mediaType" id="mediaType" />
<input type="hidden" value="<?php echo $_GET['reelId']; ?>" name="reelId" id="reelId" />
<input type="file" name="videos[]" id="videos" accept="video/mp4" multiple />
</div>
<br>
</p>
<p>
<div id="dropbox">
<ul class="hide" id="filelist">
</ul>
<div align="center" id="nofiles">Select some file to begin</div>
</div><br>
</p>
<p>
<hr>
<label>Search Tags <small>[at least two tags separate by comma]</small></label>
<input type="text" class="span5" name="searchTags" id="searchTags" disabled />
</p>
<hr>
<p align="center">
<img src="resources/img/loader.gif" class="hide" id="loader" />
<button type="button" class="btn btn-info" name="uploadBtn" id="uploadBtn" disabled><i class="icon-circle-arrow-up icon-white"></i> Begin Upload</button>
<div id="successfulUpload" class="alert alert-success hide">
<b>The videos have been successfully uploaded.</b><br/>
</div>
</p>
</div>
</form>
удалить строку 'processData: false' и посмотреть, работает ли она. – Ohgodwhy
Вы уверены, что ранее загруженные файлы? Я не получил его работать с $ .ajax раньше, если у формы есть файлы и в итоге появился плагин $ .ajaxForm http://malsup.com/jquery/form/ – HMR
Я уверен, что он загружал файл до @Ohgodwhy не работает – Ronnie