2016-11-10 1 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); 
    } 
}); 

私はfalseにPROCESSDATAを設定する必要がありますが、最初は、私はちょうどので、私はにシフト$.postと一緒に行った、電子メールを送信するためにPHPファイルにフォーム情報と添付ファイルを渡すためにしようとしています$.ajax、現在のところ私のPHPファイルは空の戻り値を送信しています。各項目にはキーを必要とするよう

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

は( 'セレクタあなたが個別に 'のjQueryを表示してみてください – sam

+0

データが無効であるJSONデータを文字列化してみてください').val() 'それらのどれも' undefined'でないことを確認してください。もしエラーがなければあなたのコンソールを確認してください。 –

+0

を送る – Beginner

答えて

0

あなたはdataプロパティに提供しているオブジェクトの構文が正しくありません。私のPHPファイル内のコードのみがprint_r($_POST);

EDITです。

ただし、ファイルをアップロードするには、すべてのデータ(ファイルと入力値)をFormDataオブジェクトに入れて送信する必要があります。これを試してください:あなたは、要求に含めるすべての入力周りform要素を配置する場合

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); 
    } 
}); 

あなたはこのくらい、はるかに簡単に作ることができます。そのように、あなただけのFormDataコンストラクタにそのフォームの参照を提供することができ、すべての値は、あなたのために移入されます

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

私は最後のオプションを試してみました!しかし、ファイルはphpファイルには渡されません。 – iamTony

+0

あなたのお手伝いをさせていただくために、リクエストに含まれるファイルにアクセスするために使用しているHTMLとPHPを確認する必要があります。質問を編集してそれらを含めることができますか? –

+0

上記の投稿を編集しました。私はまだアップロードされたファイルの処理を開始していません。$ _FILEにアクセスしていると仮定しています。 – iamTony

関連する問題