发布json以表达使用jQuery

Ed *_*ffe 22 post json node.js express

将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);
});
Run Code Online (Sandbox Code Playgroud)

此服务器只是将所有POST数据记录到控制台.

如果我然后将以下内容粘贴到chrome的开发控制台中: $.post('/', {number:1});

服务器打印出来:

{ number: '1' }
11
Run Code Online (Sandbox Code Playgroud)

如何阻止我传递的数字被解释为字符串?这与我正在使用的bodyParser中间件有关吗?

任何帮助赞赏!!

sou*_*eck 39

$.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})}
)
Run Code Online (Sandbox Code Playgroud)

  • 并且不要忘记添加contentType:'application/json'标头,否则服务器上的req.body中将没有数据. (3认同)