2013-05-02 79 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')

我有1個多選文件輸入,一個隱藏字段和一個文本輸入字段。

我在做什麼錯與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 2013-05-02 23:58:44

+0

你確定表單上傳過的文件嗎?我沒有得到它與$ .ajax的工作,如果表單有文件,並最終使用$ .ajaxForm插件http://malsup.com/jquery/form/ – HMR 2013-05-03 00:02:24

+0

我很積極,它是在@Ohgodwhy之前上傳文件不起作用 – Ronnie 2013-05-03 00:03:50

回答

-1

嘗試訪問它是這樣的:在FORMDATA

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

this page

+0

nope,同樣的事情 – Ronnie 2013-05-03 00:03:34

+0

這是傳遞表單元素的同樣技巧。 – 2013-05-03 00:10:01

+0

你可以發表你的表格代碼嗎?你有沒有必要的名稱=「fieldname」或ID在那裏?如果我們能看到表單,可以幫助排除故障。 – rncrtr 2013-05-03 00:10:12