lass uns direkt in den Code springen:
var formData = new FormData();
formData.append('name', dogName);
formData.append('weight', dogWeight);
formData.append('activity', dogActivity);
formData.append('age', dogAge);
formData.append('file', document.getElementById("dogImg").files[0]);
console.log(formData);
Hier füge ich einige Zeichenfolgen und ein Dateiobjekt an das formData-Objekt an, um alle Informationen asynchron an den Server zu senden.
Gleich danach habe ich diesen Jquery Ajax Request:
$.ajax({
type: "POST",
url: "/foodoo/index.php?method=insertNewDog",
data: formData,
processData: false,
contentType: false,
success: function(response){
console.log(response);
},
error: function(){
}
});
Also hier versuche ich, die Informationen zum Server zu POST, auf der Server-PHP-Datei habe ich eine einfache print_r von POST, also sehe ich, was durchkommt und was nicht.
Leider ist meine Antwort in der console.log (Daten) leer.
Wenn Sie den HEADER auf der Registerkarte Netzwerk überprüfen, erhalten Sie die folgende leere Ausgabe:
Erfolgsfunktion wird aufgerufen (nur zur Klarstellung)
Wenn Sie eine Ajax-Anforderung über jQuery senden und FormData senden möchten, müssen Sie JSON.stringify
nicht für diese FormData verwenden. Wenn Sie eine Datei senden, muss der Inhaltstyp multipart/form-data
sein, einschließlich boundry
. In etwa multipart/form-data; boundary=----WebKitFormBoundary0BPm0koKA
Um FormData einschließlich einiger Dateien über jQuery ajax zu senden, müssen Sie Folgendes tun:
data
ohne Änderungen auf FormData.processData
auf false
(Ermöglicht es Ihnen, zu verhindern, dass jQuery die Daten automatisch in eine Abfragezeichenfolge umwandelt).contentType
auf false
(Dies ist erforderlich, da sie sonst von jQuery falsch eingestellt wird).Ihre Anfrage sollte so aussehen:
var formData = new FormData();
formData.append('name', dogName);
// ...
formData.append('file', document.getElementById("dogImg").files[0]);
$.ajax({
type: "POST",
url: "/foodoo/index.php?method=insertNewDog",
data: formData,
processData: false,
contentType: false,
success: function(response) {
console.log(response);
},
error: function(errResponse) {
console.log(errResponse);
}
});
wenn Sie genau so durchdringende Antworten haben und trotzdem nicht funktionieren Keine Sorge its working
vielleicht sagt dir intelligence and quick wath
seinen not working
aber keine Sorge, schauen Sie sich network tap
an.
es funktioniert
hoffe das spart deine Zeit
//For those who use plain javascript
var form = document.getElementById('registration-form'); //id of form
var formdata = new FormData(form);
var xhr = new XMLHttpRequest();
xhr.open('POST','form.php',true);
// xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
//if you have included the setRequestHeader remove that line as you need the
// multipart/form-data as content type.
xhr.onload = function(){
console.log(xhr.responseText);
}
xhr.send(formdata);