Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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 区分响应fetch API请求的重定向/JSON数据_Javascript_Node.js_Reactjs - Fatal编程技术网

Javascript 区分响应fetch API请求的重定向/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=>{}),

我试图在前端构建一个逻辑来区分重定向和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数据});