5

req.params / req.query /req.bodyと$.post({..}のどの組み合わせを使用しても、JquerypostリクエストからJSONデータをエクスプレスで抽出できません。

これは私のjQueryです:

$.post("/mail", {email : "s@gmail.com", name : "s@gmail.com"});

また、次のさまざまな順列を試しました。

$.ajax({type: "POST", url: "/mail", dataType :"json", data :
{email : "s@gmail.com", name : "s@gmail.com"}}); 

これは私のnode.jsエクスプレスコードです:

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.queryは[]を返します

req.routeは以下を返します

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

追加してみました:

app.use(express.bodyParser()); 

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

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

4

1 に答える 1

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()
});

Expressが機能する方法は、各リクエストが宣言された順序でミドルウェアとルートを介して細流化されることです。ミドルウェアはルートの前に宣言されるようになったためbodyParser()、リクエストの本文を適切なJSON形式に解析し、解析した値をに固定しreq.bodyて、次のルート/ミドルウェアに制御を渡す機会があります。そうでなければ、req.body単に存在しません。

于 2012-12-19T21:29:03.673 に答える