Javascript 区分响应fetch API请求的重定向/JSON数据
我试图在前端构建一个逻辑来区分重定向和JSON响应,最终目标是,如果响应是重定向,则转到该页面,如果响应包含数据,则将在页面上呈现该数据 注意:如果后端以res.redirect或res.json的形式发送响应,则工作正常,但我正在努力(如下代码所示),因为当我必须首先检查来自后端的响应是什么时,我认为好像我可以在前端使用if-else语句来处理res.json和res.response之间的恶心问题,我已经尝试过了。然后(res.redirect=>{…})。然后(res.json=>{}),但看起来我使用的逻辑不正确。 请提供任何建议,谢谢:微微微笑: 我前端代码中的代码片段是Javascript 区分响应fetch API请求的重定向/JSON数据,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,我试图在前端构建一个逻辑来区分重定向和JSON响应,最终目标是,如果响应是重定向,则转到该页面,如果响应包含数据,则将在页面上呈现该数据 注意:如果后端以res.redirect或res.json的形式发送响应,则工作正常,但我正在努力(如下代码所示),因为当我必须首先检查来自后端的响应是什么时,我认为好像我可以在前端使用if-else语句来处理res.json和res.response之间的恶心问题,我已经尝试过了。然后(res.redirect=>{…})。然后(res.json=>{}),
const request = new Request("http://localhost:5000/api/newuser", options);
(async () => {
const incomingdata = await fetch(request)
*// below i differetiated the incoming response as if it is res.redirect or res.json data but didnt work*
.then((res.redirect) => {
window.location.href = res.url;
})
.then((res.json) => {
console.log("cannot find data");
})
.catch((err) => console.log("err"));
我的银行代码中的代码片段是
connection.query("SELECT * FROM users WHERE email=?;", [x1.Email], function (
err,
results
) {
console.log("74",results, err);
console.log("75",results[0].email);
if (err) throw err;
else {
if (results[0].email && results[0].password) {
console.log("79",results[0].email);
//console.log(results[0]);
if (results[0].password == x1.password)
res.redirect("http://localhost:3000/");
else {
res.json({
data: "invalid password",
});
}
} else res.redirect("http://localhost:3000/about");
}
});
});
对于重定向,您可以检查HTTP代码是否在300范围内,这是在res.status中提供的
。然后(res=>{
如果(分辨率状态>=300和分辨率状态<400){
//重定向
}否则{
返回res.json();
}
})
。然后(数据=>{
//处理json数据
});
在回调参数中使用点可能会出现语法错误,如:
。然后((res.json)=>{
但是,可以像这样解构对象:
.then({status,json})=>{
对于重定向,您可以检查HTTP代码是否在300范围内,这是在res.status
中提供的。它不会采用点符号,因此,您可以使用then(res=>{if(res.status>=300&&res.status<400){//redirect}否则{返回res json();}){//处理json数据});