2014-06-06 43 views
2

我正在使用$ .ajax方法和xhr2使用$ .ajax方法上載文件。

當我將任何標準對象分配給$ .ajax參數數據時,在$ _POST(php)中返回一個適當的非空數組。

JS:

data : {name:"john doe"} 

PHP:的print_r($ _ POST)

Array 
(
    [name] => john doe 
) 

然而,當我assing一個FORMDATA對象參數數據,以上傳文件,一個空數組是在$ _FILES返回(PHP)

JS:

data : new FormData(document.getElementById('fileupload')) 

PHP:的print_r($ _ FILES)

Array 
(
) 

我的HTML代碼是:

<form enctype="multipart/form-data"> 
<div id="myform"> 
    <input type="file" name="fileupload" id="fileupload" /> 

    <div id="submit">UPLOAD</div> 
</div> 
</form> 

我jQuery代碼是:

$('#submit').click(function(){ 

    var formData = new FormData(document.getElementById('fileupload')); 

    $.ajax({ 
      url : "upload.php", 
      type: "POST", 
      data : formData, 
      xhr: function(){ 
       myXhr = $.ajaxSettings.xhr(); 
       return myXhr; 
      }, 
      success: function(data, textStatus, jqXHR){ 
       console.log(data); 
      }, 
      cache: false, 
      contentType : false, 
      processData: false 
     }); 
}); 

你碰巧知道什麼是錯的我碼?我無法弄清楚爲什麼這個文件沒有被上傳。謝謝你的幫助。

+0

你試過'VAR FORMDATA =新FORMDATA(document.getElement( '形式'));' – Vinz243

+0

getElement是不是一個有效的JavaScript函數 – Vincent

+0

哦,我對不起,通過名稱返回元素的函數(爲了獲得表單)。 – Vinz243

回答

2
var element = document.getElementById("fileupload"); 
     var myfiles= element.files; 
     var data = new FormData(); 
     var i=0; 
     for (i = 0; i < myfiles.length; i++) { 
           data.append('file' + i, myfiles[i]); 
          } 

        $.ajax({ 
          url: 'load.php', 
          type: 'POST', 
          contentType: false, 
          data: data, 
          processData: false, 
          cache: false 
         }).done(function(msg) { 
          //do something 
         }); 

源代碼:http://sw.solfin.net.co/index.php/programacion/php-y-jquery

+0

非常感謝,它的作品。我沒有正確構建數據參數的值。 – Vincent

相關問題