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

Ich versuche Form info und Befestigung an eine PHP-Datei zu übergeben E-Mail zu senden, zunächst ging ich nur mit $.post aber ich verarbeite auf false setzen muß so verschoben ich $.ajax, derzeit sendet meine PHP-Datei eine leere Rückkehr. der einzige Code in meiner PHP-Datei ist print_r($_POST);

EDIT:

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

versuchen, die JSON-Daten stringifying – sam

+0

Daten ungültig Sie –

+0

senden einzeln versuchen, anzuzeigen 'jQuery ('Selektor ') .val() 'vergewissere dich, dass keiner von ihnen' undefiniert 'ist, überprüfe auch deine Konsole, wenn sie keinen Fehler hat – Beginner

Antwort

0

Die Syntax des Objekts, das Sie auf die data Eigenschaft sind die Bereitstellung ist falsch, da jedes Element einen Schlüssel benötigt.

Ein dringenderes Problem ist jedoch, dass zum Hochladen einer Datei alle Daten (Datei und Eingabewerte) in das Objekt FormData eingegeben werden müssen und das allein gesendet werden muss. Versuchen Sie folgendes:

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

Man könnte so viel machen, viel einfacher, wenn Sie legen ein form Element um alle Eingänge Sie wollen in der Anforderung enthalten. Auf diese Weise können Sie bieten nur eine Referenz dieser Form an den FormData Konstruktor und alle Werte für Sie ausgefüllt werden:

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

Ich habe die letzte Option versucht, danke! Die Datei wird jedoch nicht in die PHP-Datei übertragen. – iamTony

+0

Ok, um Ihnen dabei zu helfen, müssen wir Ihren HTML-Code und den PHP-Code sehen, mit dem Sie auf die Datei in der Anfrage zugreifen. Könnten Sie bitte Ihre Frage bearbeiten, um diese zu berücksichtigen. –

+0

Bearbeitet den obigen Beitrag, für den PHP habe ich nicht begonnen, die hochgeladene Datei noch zu behandeln, ich nehme an, dass ich nur auf $ _FILE zugreifen werde – iamTony