2017-07-12 24 views
0

私はexpress.Router()を使用してルートを管理しています。 then Ajax投稿リクエストは、それにデータを送信します。データを取得することはできません。Ajaxのポストリクエストでは、エクスプレスルータでデータを取得できません

Ajaxコード:

 $.ajax({ 
      url: '/custom', 
      type: 'POST', 
      contentType: 'application/json; charset-utf-8', 
      dataType: 'json', 
      processData: false, 
      data: JSON.stringify({ "key": "values" }), 
      success: function(data) { 
       console.log(data.toString()); 
      } 
     }) 

特急コード:

var express = require('express'); 
var router = express.Router();  
router.post('/custom', function(req, res) { 
     console.log(req.body); 
     console.log(req.params); 
     console.log(req.query); 

     res.write(JSON.stringify()); 
     res.end(); 
}); 

が、すべてのログが空になっています。

+0

あなたは明示的な側のためのより多くのコードを与えることができますか?このファイルの中で – Tolsee

+0

私の全体のコードはほとんどこれです。 appは別のファイルで定義されています。 Expressは、** Postman **または他のルートでデータが空であることをテストするときに機能しますが、このリンクでは要求データが必要なので機能しません。 –

+0

投稿データの解析に** body-parser **を追加しましたか? req.paramsとreq.queryは空でなければなりませんが、req.bodyは{key:values}でなければなりません。そうでない場合は、Expressが本文を解析できないことを意味します – ZeroCho

答えて

0

問題は、あなたのajaxのコンテンツタイプヘッダーの形式が正しくないためです。 contentType: 'application/json; charset-utf-8'の代わりにcontentType: 'application/json; charset=utf-8'にする必要があります。

bodyParser.json()ミドルウェアを使用していると仮定すると、ボディが解析されず、空のボディが印刷されます。あなたがPostmanとのリクエストを送ったとき、適切なヘッダーが送信されました。その理由は、それがAjaxリクエストからではなく動作したからです。

関連する問題