发布json来expression使用jQuery
从我的客户端发送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数据logging到控制台。
如果我然后粘贴到铬的开发控制台: $.post('/', {number:1});
服务器打印出来:
{ number: '1' } 11
我怎样才能阻止我传递的数字被解释为一个string? 这与我正在使用的bodyParser中间件有关吗?
任何帮助赞赏!
$.post
发送url编码的数据,所以真正发送的是number=1
,然后通过bodyParser中间件进行parsing。
要发送json,你必须使用JSON.stringify({number:1})
。
使用$.post
不幸的是不会设置适当的Content-Type
头(express会处理它),所以最好使用:
$.ajax({ url: '/', type: 'POST', contentType: 'application/json', data: JSON.stringify({number:1})} )