我在将 JSON 数据从客户端发送到运行 express 的 Node 服务器时遇到问题。
这是一个演示我的问题的简单服务器:
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
header (express 无论如何都会处理它),所以最好使用:
$.ajax({
url: '/',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({number:1})}
)
关于json - 使用 jQuery 发布 json 来表达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16498256/