2014-11-04 71 views
0

將數據發送到PHP文件這是不使用<form>無法通過AJAX

<input id="sortpicture" type="file" data-id="7" name="sortpic" multiple/> 
<button id="upload">Upload</button> 

這裏我的HTML code.I'm被JS

jQuery('#upload').on('click', function() { 
    var file_data = jQuery('#sortpicture').prop('files')[0];  
    var form_data = new FormData();     
    form_data.append('file', file_data); 
    form_data.append('id', 7); // ---> If I send this only i'm able to access `id` in php. If include `file` not access id in php file. 

    jQuery.ajax({ 
     url: 'upload.php', 
     cache: false, 
     contentType: false, 
     processData: false, 
     data: form_data,       
     type: 'POST', 
     success: function(response){   
     }, 
     error:function(e){ 
     } 
    }); 

PHP文件

$name = $_FILES['file']['name']; 
//print_r($_FILES); 
$id = $_POST['id']; // Unable to get id. 

如何我可以在php文件中獲得id。任何建議請。

+0

你有沒有看着[使用Ajax上傳於一種形式的數據和文件?(http://stackoverflow.com/questions/10899384/uploading-both-data-and-files-in-one- form-using-ajax) – 2014-11-04 03:25:24

+0

你的代碼片段應該可以正常工作..請在你的瀏覽器中檢查你的param頭文件。 – 2014-11-04 06:20:37

回答

-1

根據文檔,我相信你很接近。請記住,我從來沒有使用FormData API :)但是,如果我正確解釋它,它正在尋找「名稱」屬性。

jQuery('#upload').on('click', function() { 
    var formData = new FormData(); 
    var inputData = $('this').find('input'); 
    var fileData = inputData.files[0];  

    formData.append('file', fileData); //wants name attribute here?// 
    formData.append('id', 7); 

    jQuery.ajax({ 
     url: 'upload.php', 
     cache: false, 
     contentType: false, 
     processData: false, 
     data: formData,       
     type: 'POST', 
     success: function(response){   
     }, 
     error:function(e){ 
     } 
    }); 
}); 
+0

'form_data.append('sortpic',file); //想要名稱屬性在這裏?//' - 這將是'sortpic''。問題中的代碼使用''file'',這是代碼試圖從PHP讀取的名稱。 DOM中調用的字段無關緊要,數據集正在手動構建。 – Quentin 2014-11-04 07:36:26

+0

它在客戶端很重要。顯然,如果你使用的是錯誤的選擇器,那麼javascript將不起作用。我知道PHP認爲它是['文件'],沒有任何爭議。 – EternalHour 2014-11-04 07:49:08

+0

「append」的第一個參數不是選擇器,它是您分配值(第二個參數)的名稱。 – Quentin 2014-11-04 08:47:30