2012-12-19 19 views
5

Egal, welche Kombination von req.params/req.query/req.body und $ .post ({..} ich verwende, ich kann keine JSON-Daten aus meiner Jquery-Post-Anfrage in express extrahieren .Jquery-Daten zum Ausdrucken senden

Das ist mein jQuery:

$.ajax({type: "POST", url: "/mail", dataType :"json", data : 
{email : "[email protected]", name : "[email protected]"}}); 

Das ist mein node.js exp:

$.post("/mail", {email : "[email protected]", name : "[email protected]"}); 

ich auch verschiedene Permutationen versucht haben, resse Code:

app.post("/mail", function(req, res) { 
    console.log(req.body.name); 
    console.log(req.route); 
    console.log("params1: " + req.param.params); 
.... 

ich unendlich viele Möglichkeiten versucht haben, ohne Erfolg die Daten E-Mail und Namen zuzugreifen. Ich wäre überrascht, wenn die Lösung eine einfache Modifikation von req.body/req.params wäre, aber alles ist möglich! Die Daten sind einfach nicht da! (Es erscheint nicht in meiner URL entweder - alles, was ich sehe, ist localhost: 1337)

req.body/req.params/req.param.params/req.params alleundefined und erf zurückzukehren. Abfrage gibt[] zurück.

req.route kehrt:

{ path: '/mail', 
    method: 'post', 
    callbacks: [ [Function] ], 
    keys: [], 
    regexp: /^\/mail\/?$/i, 
    params: [] } 

Ich habe versucht, das Hinzufügen:

app.use(express.bodyParser()); 

Aber zugegebenermaßen ich seinen Zweck nicht vollständig verstehen. Jede Hilfe wird sehr geschätzt.

Frohe Feiertage! // Sam

+0

Vielleicht hilft dir das ein bisschen? http://stackoverflow.com/questions/5710358/how-to-get-post-query-in-express-node-js –

+0

Die 'bodyParser' Middleware ist die eine Initialisierung' req.body' aus dem POST Körper, also Das brauchst du wirklich. Stellen Sie sicher, dass Sie es verwenden, bevor Sie Ihre Routen mounten (d. H. Bevor Sie entweder "app.use (app.router)" oder Ihren ersten Aufruf "app.get"/"app.post" usw. verwenden). –

+0

Was Linus gesagt hat, stellen Sie sicher, dass in Ihrer Konfiguration bodyParser vor Ihrem Routing eingestellt ist. – leepowell

Antwort

1

Sie werden die bodyParser() Middleware vor allen Routen, die sie hinzufügen müssen verwenden, etwa so:

app.use(express.bodyParser()); 

app.post('/mail', function(req, res) { 
    console.log(req.body); // the body attribute will be created by the bodyParser() 
}); 

Die Art und Weise ausdrücklich Arbeiten ist, dass jede Anfrage nach unten durch Middleware getröpfelt und Routen in der Reihenfolge, in der sie deklariert sind. Da die Middleware bodyParser() jetzt vor Ihrer Route deklariert ist, besteht die Möglichkeit, den Hauptteil der Anfrage in ein nettes JSON-Format zu analysieren, den analysierten Wert in req.body zu kleben und dann die Kontrolle an die nächste Route/Middleware weiterzuleiten; ansonsten wird req.body einfach nicht existieren.

+0

schön, danke für diese Antwort! –