我正在构建我的第一个项目,所以我对Js,Node Js等还很陌生。我的问题是,在这种情况下,如何将数据从Javascript文件发送到后端Node.js文件,Javascript文件是链接到html文件。
我的HTML:
<button type="button" class="btn btn-light bn" id="1"><span
class="dif">3/8"</span> Q2.15</button>
我的JAVASCRIPT:
const button = document.getElementById('1');
button.addEventListener('click', function(e) {
fetch('/clicked', {
method: 'POST',
body: JSON.stringify({ id: e.currentTarget.id }),
})
.then(function(response) {
if(response.ok) {
console.log('Click was recorded');
return;
}
throw new Error('Request failed.');
})
.catch(function(error) {
console.log(error);
});
});
节点JS代码:
app.post('/clicked', (req, res) => {
const click = JSON.parse(req.body).id;
Product.findOne({id: click}, function(err, foundLList) {
if(err) {
console.log(err);
} else {
console.log(foundLList);
}
}
);
});
我要完成的工作是将单击的按钮的ID发送到后端(node.js),但不起作用,我尝试用console.log thr req和req.menu以及当我执行req.menu时仅出现{},并且当我向请求添加.id时显示未定义。
答案 0 :(得分:1)
在您的fetch()
调用中,应将Content-Type
标头指定为application/json
。这样,您的服务器就知道如何处理它。
fetch('/clicked', {
method: 'POST',
body: JSON.stringify({ id: e.currentTarget.id }),
headers: {
'Content-Type': 'application/json'
}
})
在Node.js方面,您似乎正在使用Express。确保您还使用了Body Parser middleware,它可以处理JSON。
const bodyParser = require('body-parser');
app.use(bodyParser.json());
或者,对于较新/当前版本的Express,可以使用express.json()
。