2012-12-19 40 views
5

req.params/req.query/req.bodyと$ .post({..}の組み合わせに関係なく、エクスプレスでのJqueryのポストリクエストからJSONデータを抽出できません。これは私のNode.js EXPあるExpressへのJqueryデータの投稿

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

:私もの様々な順列を試してみました

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

は、これは私のjQueryのですRESSコード:

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

私は成功せず、データの電子メールと名前をアクセスするための無限の方法を試してみました。ソリューションがreq.body/req.paramsへの単純な変更であれば驚いていますが、何か可能です!データはそこにはありません! (いずれかの私のURLに表示されない - 私が見るすべてはlocalhost:1337)

req.body/req.params/req.param.params/req.params すべてが未定義とREQを返します。クエリは、[]を返します。

req.route 戻り:私が追加しようとした

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

app.use(express.bodyParser()); 

しかし、確かに、私は完全にその目的を理解していません。どんな助けでも大歓迎です。

ハッピーホリデー! //サム

+0

おそらく、これはあなたを少し助けるでしょうか? http://stackoverflow.com/questions/5710358/how-to-get-post-query-in-express-node-js –

+0

'bodyParser'ミドルウェアは、POST本体から' req.body'を初期化するものです。あなたは本当にそれが必要です。ルートをマウントする前に(つまり 'app.use(app.router)'や最初の 'app.get' /' app.post'などの呼び出しの前に)必ず使用してください。 –

+0

Linusが言ったことは、あなたの設定でbodyParserがルーティングの前に設定されていることを確認してください。 – leepowell

答えて

1

あなたはそうのように、それを使用するすべてのルートの前にbodyParser()ミドルウェアを追加する必要があります:

app.use(express.bodyParser()); 

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

特急作品の方法は、それぞれの要求はあなたのミドルウェアとルートを通じて流れ落ちているということですそれらが宣言された順序で。 bodyParser()ミドルウェアはあなたのルートの前に宣言されているので、リクエストの本文を素敵なJSON形式に解析し、解析された値をreq.bodyに保存して、次のルート/ミドルウェアに制御を渡します。さもなければ、req.bodyは単に存在しません。

+0

この回答に感謝しています。 –

関連する問題