2013-05-02 2 views
1

Я использовал это, чтобы обработать форму с помощью 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> 
+0

удалить строку 'processData: false' и посмотреть, работает ли она. – Ohgodwhy

+0

Вы уверены, что ранее загруженные файлы? Я не получил его работать с $ .ajax раньше, если у формы есть файлы и в итоге появился плагин $ .ajaxForm http://malsup.com/jquery/form/ – HMR

+0

Я уверен, что он загружал файл до @Ohgodwhy не работает – Ronnie

ответ

-1

Попробуйте получить доступ к так:

var form = document.getElementById('form-id'); 
var formData = new FormData(form); 

От this page на FormData.

+0

nope, то же самое – Ronnie

+0

это та же техника прохождения в элементе формы. –

+0

не могли бы вы разместить свой код формы? У вас есть требуемое имя = «имя поля» или идентификаторы? Могу быть в состоянии помочь устранить неполадки, если мы увидим форму. – rncrtr