如何在nodejs中从服务器向客户端发送数据?

时间:2015-05-20 20:55:03

标签: javascript jquery ajax node.js express

我在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 {}而不是表单输入。 我在这里缺少什么?

1 个答案:

答案 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);
        });      
})