我正在尝试使用 AJAX 将简单的表单数据发送到 Node/express 服务器。提交时,我会进入 Cannot POST/页面,虽然我能够 console.log 请求,但它不包含表单中的数据。我缺少什么?
表格
<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 请求 $('按钮').on('点击', 函数(数据) {
$.ajax({
data: data,
url: '/data',
type: "POST"
})
}
)
服务器.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)
});
最佳答案
你忘记了正文解析器。
- 安装body-parser包
npm i body-parser
- 在快速路由之前添加正文解析器 JSON 中间件。
示例:
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"
})
}
)
关于javascript - 访问 Node 服务器上的发布数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40197783/