我在nodejs中使用express运行服务器,在index.html文件中向这样的客户端提供html表单:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser());
app.get('/', function(req, res){res.sendfile('index.html');});
app.post('/', function(req, res){
res.json(req.body);
});
app.listen(8080);
req.body
为我提供表单输入。现在我需要将req.body发送回客户端,为此我在客户端(在index.html内)使用ajax,如下所示:
var data;
$('#submit').click(function()
{
console.log('Button Clicked');
$.ajax({
url: '/',
type:'POST',
data: data,
dataType: 'json',
}).done(function(data) {
console.log(data);
});
})
然而,当我单击按钮submit
时,我在浏览器控制台中得到Object {}
而不是表单输入。
我在这里缺少什么?
答案 0 :(得分:0)
您的代码中存在两个问题:
首先,正如评论所提到的,bodyParser()
已被弃用,您应该使用特定的bodyParser中间件(json,text,urlencoded,raw)。所以在你的情况下:
app.use(bodyParser.json())
其次,您的客户端调用jQuery.ajax应该对您的数据进行字符串化。像这样:
$('#submit').click(function()
{
console.log('Button Clicked');
$.ajax({
url: '/',
type:'POST',
data: JSON.stringify(data),
dataType: 'json',
}).done(function(data) {
console.log(data);
});
})