将数据从Javascript文件发送到后端Node.js

时间:2019-07-15 02:49:44

标签: javascript html node.js

我正在构建我的第一个项目,所以我对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时显示未定义。

1 个答案:

答案 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()