【发布时间】:2020-07-31 19:56:23
【问题描述】:
我正在使用 fetch 发出发布请求并寻找回复以在我的页面上使用它。 我有这样的代码:
e.preventDefault();
const data = {name: document.querySelector('input[name = "name"]').value, age: document.querySelector('input[name="age"]').value}
fetch('/', {
method: 'POST', // *GET, POST, PUT, DELETE, etc.
headers: {
'Content-Type': 'application/json'
// 'Content-Type': 'application/x-www-form-urlencoded',
},
body: JSON.stringify(data) // body data type must match "Content-Type" header
}).then((response) => response.json()).then((data) => console.log(data));
})
数据可以到后端,但是 fetch 显然没有返回任何内容,并且没有响应以及数据。我错过了什么?
好像我没有发回任何东西,但我不知道在这种情况下该怎么做。
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
const handlebars = require('express-handlebars');
const path = require('path');
const {MongoClient, ObjectID} = require('mongodb');
const url = 'mongodb://127.0.0.1:27017/';
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
app.use(express.static('public'));
app.set('views', path.join(__dirname, '/views'));
app.engine('handlebars', handlebars());
app.set('view engine', 'handlebars');
app.get('/', (req, res) => {
res.render('home');
})
app.get('/data', (req, res) => {
MongoClient.connect(url, { useUnifiedTopology: true }, (err, client) => {
if (err) {
return console.log(err);
}
console.log('Connect success');
const dbname = 'people';
const db = client.db(dbname);
db.collection('people').find().toArray()
.then(response => response)
.then(data => res.send(data));
})
})
app.post('/', (req, res) => {
MongoClient.connect(url, { useUnifiedTopology: true }, (err, client) => {
if (err) {
return console.log(err);
}
console.log('Connect success');
const dbname = 'people';
const db = client.db(dbname);
db.collection('people').insertOne(req.body, (error) => {
if (error) {
return console.log(error);
}
console.log('Insertion success');
})
})})
app.listen(port, () => {
console.log(`server has started on ${port}`);
})
你是对的,我不发送任何东西,这就是为什么在前面什么都没有。我已经弄清楚我错过了什么,谢谢。
正确的代码是:
app.post('/', (req, res) => {
MongoClient.connect(url, { useUnifiedTopology: true }, (err, client) => {
if (err) {
return console.log(err);
}
console.log('Connect success');
const dbname = 'people';
const db = client.db(dbname);
const entry = req.body;
db.collection('people').insertOne(entry, (error) => {
if (error) {
return console.log(error);
}
console.log('Insertion success');
res.send(entry);
})
})})
【问题讨论】:
-
您是否从后端发送了任何响应?你能把你的后端代码贴在这里吗?
-
嗨,@ubaidshaikh,感谢您的回复,我已经发布了我的完整后端代码。
标签: javascript fetch-api