2016-06-29 9 views
0

Ich habe Probleme mit dem Zugriff auf bestimmte Felder meiner serialisierten Formdaten in meinem Express-Router.Express.js Zugriff Felder von serialisierten Formulardaten

Das ist mein Ajax-Anforderung:

var formData = $("#add-fut-account-form").find("select, textarea, input").serialize(); 
$.ajax({ 
    url: "/accounts/insert", 
    type: "POST", 
    data: {formData}, 
    success: function (response) { 
    $("#addFutAccountResponse").append(response); 
    }, 
    error: function (xhr) { 
    alert("Error while trying to insert a new account!"); 
    } 
}) 

Das ist mein Router:

router.post('/insert', function(req, res) 
{ 
    var formData = req.body.formData; 
    console.log(formData); 
}); 

Mein console.log() -Ausgabe:

E-Mail = kentor% 40gmail.com & password = dsadsa & secret = 123 & Plattform = P & Account-type = x & proxy = & rpm = 8 & Schwelle = 3,5 & optional-comment = & ist aktiv = auf

Mein Problem:

Wie soll ich meine formData serialisieren/senden/empfangen, damit ich von meinem Formular aus leicht auf bestimmte Felder (wie E-Mail, Passwort) zugreifen kann. Ich habe versucht, req.body.formData.email zu verwenden, die nicht funktioniert (Ergebnis: nicht definiert). Ich kenne zwei mögliche Wege, um dieses Problem zu lösen, aber sie scheinen ein Umweg zu sein. Daher möchte ich wissen, was die beste Praxis für die Handhabung von Formdaten mit Express ist.

Edit: Ich bin schon die bodyParse in meinem app.js mit:

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended: true})); 

Antwort

1

versuchen, die Ajax machen wie folgt:

var formData = $("#add-fut-account-form").find("select, textarea, input").serialize(); 

$.ajax({ 
    url: "/accounts/insert", 
    type: "POST", 
    data: formData, 
    success: function (response) { 
    $("#addFutAccountResponse").append(response); 
    }, 
    error: function (xhr) { 
    alert("Error while trying to insert a new account!"); 
    } 
}) 

die geschweiften Klammern auf Daten entfernen

+0

Sie haben recht, das ist passiert, als ich mein tatsächliches Szenario vereinfacht habe. Wie würde ich Daten zusammen mit den Formdaten übergeben? Ich habe Daten verwendet: {"formData": formData, "additionalInfo": 123} und dann wollte ich auf req.body.formData.email zugreifen, was nicht funktioniert hat. – kentor

+0

Sie können serializeArray verwenden, das Ihnen ein Array von Objekten zurückgibt, so dass Sie einfach ein Element dorthin schieben können, es kann jedoch die Art ändern, wie Sie auf die Elemente zugreifen. Sie können das Array mit einer einfachen for-Schleife in ein tatsächliches js-Objekt konvertieren. und natürlich können Sie einfach eine versteckte Eingabe zu Ihrem Formular hinzufügen :) –

Verwandte Themen