Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从客户端GET请求的响应中获取JSON数据?_Javascript_Node.js_Json_Ajax_Express - Fatal编程技术网

Javascript 如何从客户端GET请求的响应中获取JSON数据?

Javascript 如何从客户端GET请求的响应中获取JSON数据?,javascript,node.js,json,ajax,express,Javascript,Node.js,Json,Ajax,Express,这是我的客户端GET请求,请求服务器获取一些JSON数据 fetch("/" + "?foo=bar", { method: "GET", }).then(response => { console.log("JSON DATA:", response) }) 这就是我的GE

这是我的客户端GET请求,请求服务器获取一些JSON数据

fetch("/" + "?foo=bar", {
               method: "GET",
               
           }).then(response => {
               console.log("JSON DATA:", response)
           })
这就是我的GET请求结束点的编写方式(下半部分是相关部分)

如您所见,我正在使用res.json({test:“hello”})作为响应。这意味着当我在客户端console.log(response)时,它应该会出现{test:“hello”}对吗?但是,我得到了以下回应。有什么建议吗?谢谢


您得到的是一个
响应
,它没有直接的响应。你应该拜访它:

fetch(“/?foo=bar”)
.then(res=>res.json())
。然后(res=>{
console.log(res);//已解析json对象
});
如果您不希望解析为JSON或具有非JSON响应,请改用
.text()


.

非常有帮助,谢谢!!另外,就我所知,res.json()为什么不需要下面这样的花括号呢。fetch(“/?foo=bar”).then(res=>{res.json()}).then(res=>{console.log(res);//已经json解析的对象});对于箭头函数,如果没有大括号,则表示返回表达式。在本例中,返回
res.json()
,以利用承诺链。
router.get("/", function(req, res) {
        mysql.pool.query("SELECT * FROM workouts", function(err, rows, fields) {
            if (err) {
              console.log(err)
            } else {
                let parsedData = JSON.parse(JSON.stringify(rows))
                for (let entry of parsedData) {
                    // changing 1 and 0 to represent lbs or kg
                    if (entry.lbs == 1) {entry.lbs = "lbs"}
                    else {entry.lbs = "kg"}
                    
                    //formatting the date
                    let formattedDate = new Date(entry.date).toLocaleDateString('en-US', {year: 'numeric', month: '2-digit', day: '2-digit'});
                    entry.date = formattedDate
                }
              let data = {
                    entry: parsedData
              }
              console.log("REQ.QUERY", req.query)
              if (req.query.foo) {
                  //send JSON data back to client
                  console.log(parsedData)
                  res.json({test:"hello"})
              } else {
                res.render("home", data)
              }
              
            }
          })
})