访问节点服务器上的帖子数据?

时间:2016-10-22 22:46:34

标签: javascript ajax node.js express

我尝试使用AJAX将简单的表单数据发送到节点/快速服务器。提交时,我带到了一个无法POST /页面,虽然我能够在console.log中获得一个req,但它并没有包含表格中的数据。我错过了什么?

表格

<form method="POST" class="form-group">
    <label for="sentenceCount">Sentences</label>
     <input type="number" placeholder="10" name="sentence count" id="sentenceCount" class="form-control parameters">
  <button type="submit" id="submit" class="btn btn-primary mt-1">Submit</button>

</form>

AJAX请求  $(&#39;按钮&#39;)。on(&#39;点击&#39;,功能(数据){

            $.ajax({
                data: data,
                url: '/data',
               type: "POST"

            })
        }

    )

Server.js

var express = require('express');
var app = express();
app.listen(8000)

app.get('/', function (req, res) {
    res.sendFile('/Index.html', {
        root: __dirname
    })
});

app.post('/data', function (req, res) {
    console.log(req)
})

更新:

我已经摆弄并且能够访问身体属性,但是身体是空的,无法获得我需要的输入值。

AJAX:

 $('button').on('click', function(data) {
         var formData = $('input').val();
        console.log(formData)

            $.ajax({
                data: formData,
                url: '/data',
               type: "post"

            })
        }

    )

服务器:

app.get('/', function (req, res) {
res.sendFile('/Index.html', {
    root: __dirname
})
});

    app.use(bodyParser.json())

    app.post('/data', function(req, res)  {
        console.log(req.body)
        });

1 个答案:

答案 0 :(得分:1)

你忘记了身体解析器。

  1. 安装body-parsernpm i body-parser
  2. 在快速路由之前添加正文解析器JSON中间件。
  3. 示例:

    const bodyParser = require('body-parser');
    const express = require('express');
    
    const app = express();
    
    app.use(bodyParser.json())
    
    app.post('/data', (req, res) => {
        console.log(req.body);
        res.end();
    });
    

    表单数据应该是使用JSON编码的对象:

     $('button').on('click', function(data) {
         var formData = $('input').val();
            $.ajax({
                data: {value: formData},
                url: '/data',
               type: "post"
    
            })
        }
    
    )