【发布时间】:2019-03-07 19:45:05
【问题描述】:
我正在尝试向我的服务器发出 fetch 请求。 但我一直得到一个空的 req.body。
客户端脚本:
const form = document.getElementById('form1')
form.addEventListener('submit', (e) => {
e.preventDefault();
const formData = new FormData(form);
const link = formData.get('link');
var payload = {
link
};
console.log(payload);
const options = {
method: "POST",
body: JSON.stringify(payload),
headers: {
'content-type': 'application/json'
}
}
console.log(options);
fetch('/api/gtmetriks', options)
.then(response => response.json()).then(result => console.log(result)).catch(err => console.log(err));
})
服务器代码:
const bodyParser = require('body-parser');
const cors = require('cors')
const app = express()
//cors
app.use(cors())
app.use(bodyParser.urlencoded({
extended: true
}));
// parse application/json
app.use(bodyParser.json())
app.post('/api/gtmetriks', (req, res) => {
console.log(req.body);
})
所以当我发布请求时,我会进入控制台“{}”。 但客户端浏览器中没有错误。
【问题讨论】:
-
`console.log(payload);` 打印的数据是否正确?
-
这是输出:
{method: "POST", body: "{"link":"tesla.com"}", headers: {…}} body: "{"link":"tesla.com"}" headers: content-type: "application/json" __proto__: Object method: "POST" __proto__: Object -
能否在
console.log()下的服务器代码中添加res.sendStatus(200);,然后发送请求标头?服务器日志是否显示任何错误? -
app.post('/api/gtmetriks', (req, res) => { res.send(req.body); }) 如果你这样做会怎样
-
它在我的电脑上运行良好。
标签: javascript node.js express fetch body-parser