2017-08-22 1 views
0

ich die aktuelle Javascript bin mit FormulardatenFormData Wechsel von Multipart/Form-Daten zu Form-Urlencodiert?

var request = new XMLHttpRequest(); 
request.open("POST", "/validate",false); 
request.send(new FormData(form)); // form is document.getElementById("#form") 

Mit einem expressjs Backend body-parser mit folgenden Einstellungen

app.use(parser.urlencoded({ extended: false })); 

Die Formulardaten geschrieben schreiben richtig mit content-type-multipart/form-data; werden aber nach body-parser Sie analysieren nicht mehrteiligen Inhalt. Wie kann ich die Formularübermittlung entweder in urlencoded oder in json ändern, die beide vom Backend analysiert werden können?

+0

bereits versucht. Der Inhalt wird weiterhin als Multipart gesendet. der Parser analysiert diesen Inhalt, zeigt aber all das Dispositionsmaterial – georoot

+0

Ich habe meinen Kommentar zu meiner Antwort aktualisiert – hoangdv

+0

@hoangsetup hat alles funktioniert. Danke für die Hilfe :) – georoot

Antwort

1

Versuchen Sie, einen Header hinzufügen und Daten konvertieren, die mit URL-kodieren Format

function urlencodeFormData(fd){ 
    var s = ''; 
    function encode(s){ return encodeURIComponent(s).replace(/%20/g,'+'); } 
    for(var pair of fd.entries()){ 
     if(typeof pair[1]=='string'){ 
      s += (s?'&':'') + encode(pair[0])+'='+encode(pair[1]); 
     } 
    } 
    return s; 
} 
var request = new XMLHttpRequest(); 
request.open('POST', '/validate', false); 
request.setRequestHeader('Content-Type','application/x-www-form-urlencoded') 
request.send(urlencodeFormData(new FormData(form))); 
+1

'urlencodeFormData = fd => neue URLSearchParams ([... fd])' – Endless