wake-up-neo.net

das formData-Objekt funktioniert nicht mit Jquery AJAX Post?

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:

 enter image description here

Erfolgsfunktion wird aufgerufen (nur zur Klarstellung)

10
noa-dev

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:

  • Setzen Sie data ohne Änderungen auf FormData.
  • Setzen Sie processData auf false (Ermöglicht es Ihnen, zu verhindern, dass jQuery die Daten automatisch in eine Abfragezeichenfolge umwandelt).
  • Setzen Sie die Variable 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);
    }
});
16
Viktor Bahtev

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 

 enter image description here

aber keine Sorge, schauen Sie sich network tapan. enter image description here

es funktioniert 

hoffe das spart deine Zeit

4
//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);
0
ajinkya