Javascript Fetch不返回任何内容
我正在用fetch发出一个post请求,并寻找回复,以便在我的页面上使用它。 我有这样一个代码:Javascript Fetch不返回任何内容,javascript,fetch-api,Javascript,Fetch Api,我正在用fetch发出一个post请求,并寻找回复,以便在我的页面上使用它。 我有这样一个代码: e.preventDefault(); const data = {name: document.querySelector('input[name = "name"]').value, age: document.querySelector('input[name="age"]').value} fetch('/', { method:
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);
})
})})
您没有从后端返回任何内容,因此fetch不会返回任何内容,显然您没有得到任何响应。试着像下面那样发送回复
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, response) => {
if (error) {
return console.log(error);
} else {
console.log('Insertion success');
console.log('inserted record', response.ops[0]);
res.send(response.ops[0]);
}
})
})
})
请尝试一下,并告诉我它是否有效。您是否从后端发送了响应?您能在这里发布您的后端代码吗?您好,@ubaidshaikh,谢谢您的回复,我已经发布了完整的后端代码。顺便问一下,您想要什么作为回复?不,它不起作用,给我-无法读取未定义的属性“then”。我想获取我插入的对象,以便在前端处理它。