Javascript 如何从客户端GET请求的响应中获取JSON数据?
这是我的客户端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
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)
}
}
})
})