有没有一种方法可以将变量从client.js文件发送到您的node.js文件?

时间:2019-04-01 09:37:04

标签: javascript node.js ajax fetch body-parser

我试图将产品编号从客户端传递到服务器,以便将其保存到数据库中。我已经尝试了近100种不同的方式来打印出“ prod”变量,但是没有任何效果。

我的代码中已经包含正文解析器和其他内容。我做错了什么小事吗?如果是这样,我应该如何编辑客户端文件或服务器文件,以便能够将“产品”从客户端传递到服务器。

从现在开始,如果只说undefined

Client.js:

    function addToCart(prod1) { 
     fetch( '/addToCart' , { method: ' POST ', body: ' prod= ' + prod1 }); 
    }

server.js:

    app.post("/addToCart", (req, res) => {
      console.log(req.body.prod);
    });

我希望在控制台时,无论在服务器文件文件中看到什么“ prod”,并将其注销到屏幕上

3 个答案:

答案 0 :(得分:2)

添加application/json作为标题的内容类型,并使用JSON.stringify({yourKey:yourData})作为正文。

客户

function addToCart(prod1) { 
 fetch( '/addToCart' , { 
   headers: { "Content-Type": "application/json" },
   method: ' POST ',
   body: JSON.stringify({prod : prod1 })
 }); 
}

服务器:

app.post("/addToCart", (req, res) => {
  console.log(req.body.prod);
});

答案 1 :(得分:1)

为什么不尝试发送json对象而不是字符串?

data = {
  prod: prod1
}

function addToCart(data) { 

 fetch( '/addToCart' , { method: ' POST ', body: JSON.stringify(data) }); 

}

答案 2 :(得分:0)

我在这里看到的第一个问题是您没有偷拍客户请求的内容类型。 如果您使用

headers: { 'Content-Type': 'application/json' }

传递POST数据的正确方法是:

body: JSON.stringify({prod: prod1})