JSONデータをクライアントからExpressを実行しているノードサーバーに送信するときに問題が発生します。
これが私の問題を示す単純なサーバーです。
_var express = require('express');
var app = express();
app.configure(function(){
app.use(express.bodyParser());
app.use(app.router);
app.use(express.logger());
});
app.listen(80);
app.post('/', function(req,res){
console.log(req.body);
console.log(req.body.number + 1);
});
_
このサーバーは、すべてのPOSTデータをコンソールに記録するだけです。
次に、以下をChromeの開発コンソールに貼り付けます:$.post('/', {number:1});
サーバーは次のように出力します。
_{ number: '1' }
11
_
渡した数値が文字列として解釈されないようにするにはどうすればよいですか?私が使用しているbodyParserミドルウェアと関係がありますか?
助けてくれてありがとう!!
_$.post
_は、URLエンコードされたデータを送信するため、実際に送信されるのは_number=1
_であり、これはbodyParserミドルウェアによって解析されるのと同様に解析されます。
Jsonを送信するには、JSON.stringify({number:1})
を使用する必要があります。
_$.post
_を使用しても、残念ながら適切な_Content-Type
_ヘッダーが設定されないため(Expressがそれを処理します)、次のように使用することをお勧めします。
_$.ajax({
url: '/',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({number:1})}
)
_