2016-09-27 4 views
5

Dies ist mein HTML-Formular, das ein Bild als Datei inout akzeptiert, der Benutzer kann eine Bilddatei auswählen und klicken Sie dann auf Senden. Dies funktioniert, aber die URL der aktuellen Seite wechselt zu localhost: 1337/ad/upload. Ich möchte, dass die Seite auf derselben URL bleibt.So senden Sie mehrteilige formdata unter Verwendung von jquery

$("form#uploadForm").submit(function(event) { 
    event.preventDefault(); 
    var formData = new FormData($(this)[0]); 
    var posting = $.post(url, formData); 

}) 

Ich habe dies versucht, die Form mit Jquery zu schicken, aber ich erhalte eine Fehlermeldung: Nicht abgefangene Typ Fehler: Illegale Invocation

Welche Daten senden Sie das Formular, wenn der Typ multipart/formdata ist und wie können wir erhalten diese Daten auf jQuery

+0

Verwenden Sie dieses 'var formdata = new Formdata (this)' –

Antwort

14

verarbeite

standardmäßig Daten in die Datenoption als Objekt übergeben (technisch, etwas anderes als ein String) verarbeitet und in einen Query-String umgewandelt werden, auf den Standardbeschlag Inhaltstyp "Anwendung/x-www-form-urlencoded". Wenn Sie ein DOMDocument oder andere nicht verarbeitete Daten senden möchten, setzen Sie diese Option auf false.

Bitte überprüfen jQuery Ajax Documentation

Versuchen ajax so -

var form = new FormData($("#uploadForm")[0]); 
$.ajax({ 
     url: your_url, 
     method: "POST", 
     dataType: 'json', 
     data: form, 
     processData: false, 
     contentType: false, 
     success: function(result){}, 
     error: function(er){} 
}); 
+0

Danke soviel !!! funktioniert perfekt – user3655266

0

Sie auf die Formdata

für die Verarbeitung aller Form geben kann
var form = $('#uploadForm')[0]; 
// You need to use standart javascript object here 
var formData = new FormData(form); 

oder geben Sie genaue Daten für die Formulardaten

var formData = new FormData(); 
formData.append('userPhoto', $('input[type=file]')[0].files[0]); 
Verwandte Themen