2016-11-10 226 views
1
var name = jQuery('[data-field="name"]').val(); 
var email = jQuery('[data-field="email"]').val(); 
var inumber = jQuery('[data-field="inumber"]').val(); 
var rnumber = jQuery('[data-field="rnumber"]').val(); 
var date = jQuery('[data-field="date"]').val(); 
var amount = jQuery('[data-field="amount"]').val(); 
var feedback = jQuery('[data-field="name"]').val(); 

var file_attach = new FormData(jQuery('input[name^="media"]'));  
jQuery.each(jQuery('input[name^="media"]')[0].files, function(i, file) { 
    file_attach.append(i, file); 
}); 
jQuery.ajax({ 
    type: 'POST', 
    data: { func: "sendMail", name,email,inumber,rnumber,date,amount,feedback,file_attach}, 
    url: 'billing-information-mailer.php', 
    cache: false, 
    contentType: false, 
    processData: false, 
    success: function(data){ 
     console.log(data); 
    } 
}); 

我試圖形式的信息和附件傳遞到PHP文件發送一封電子郵件,起初我只是$.post去,但是我需要過程數據設置爲false,所以我轉移到$.ajax,目前我的PHP文件正在發送一個空的返回。在我的PHP文件中唯一的代碼是print_r($_POST);

編輯:

<input type="file" name="media" data-field="billing" id="vdnupload" name="vdnupload" placeholder="Proof of Payment"> 
+0

試圖字符串化JSON數據 – sam

+0

數據是無效的,你送 –

+0

嘗試單獨顯示'的jQuery(「選擇').val()'確保它們沒有'undefined'也檢查你的控制檯是否沒有任何錯誤 – Beginner

回答

0

你提供給data屬性的對象的語法不正確,因爲每個項目需要一個密鑰。

但是更迫切的問題是,上傳文件需要將所有數據(文件和輸入值)放入FormData對象中並單獨發送。試試這個:

var formData = new FormData();  
$.each($('input[name^="media"]')[0].files, function(i, file) { 
    formData.append(i, file); 
}); 
formData.append('name', $('[data-field="name"]').val()); 
formData.append('email', $('[data-field="email"]').val()); 
formData.append('inumber', $('[data-field="rnumber"]').val()); 
formData.append('rnumber', $('[data-field="rnumber"]').val()); 
formData.append('date', $('[data-field="date"]').val()); 
formData.append('amount', $('[data-field="amount"]').val()); 
formData.append('feedback', $('[data-field="name"]').val()); 

$.ajax({ 
    type: 'POST', 
    data: formData, 
    url: 'billing-information-mailer.php', 
    cache: false, 
    contentType: false, 
    processData: false, 
    success: function(data){ 
     console.log(data); 
    } 
}); 

如果你把一個form元素周圍的一切你想在請求中包括輸入你可以做這麼多,要簡單得多。這樣,你可以只提供形式向FormData構造參考,所有數據將被填充爲您提供:

var formData = new FormData($('#myForm')[0]); 
+0

我試過最後一個選項謝謝!但是該文件不會傳遞給php文件。 – iamTony

+0

好的,爲了幫助您,我們需要查看您的HTML和PHP用於訪問請求中的文件。你能否編輯你的問題來包括這些。 –

+0

編輯上面的帖子,爲PHP我還沒有開始處理上傳的文件,我假設我只是訪問$ _FILE – iamTony