Express中的路由处理程序没有调用任何东西吗?

时间:2018-08-31 15:36:40

标签: javascript node.js express routes fetch

我做了一个简单的文本框,可以接受

  

Youtube视频网址

将其视频ID切片,并使用提取将数据发送到我的快递服务器。我正在使用Youtube Data API v3

//after clicking button sends data
//input fields are defined already.
const sendData = (event) => {
  event.preventDefault();
  const filterUrl = input2.value.indexOf('&') != -1 ? input2.value.slice(0, input2.value.indexOf('&')) : input2.value;
  const url = new URL(filterUrl).searchParams.get("v");
  fetch('/', {
      method: 'post',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        urlname: url.toString()
      })
    })
    .then(function(res) {
      console.log(res)
    })
    .catch(function(error) {
      console.log(error)
    });
}

这是我的Express Handler:

//defined routes and PARAMETER variable is globally defined
app.route('/')
  .get((req, res) => {
    res.render('container/index', {
      title: 'Hello User!',
      content: 'Welcome to youtube Comment viewer'
    });
  })
  .post((req, res) => {
    console.log("hello")
    PARAMETER = req.body.urlname;
    console.log(PARAMETER);
    res.redirect('/randomCommentView');
  });


//get request 
app.get('/randomCommentView', (req, res) => {
  console.log("inside");
  Comments(PARAMETER)
    .then((data) => {
      res.render('container/comment', {
        Comment: 'fgfg'
      })
    }).catch(err => {
      if (err) res.status(404).render('container/index', {
        notFound: `Your request couldn't be completed ERR: ${err}`
      })
    })
  console.log(req.body);
});

但是当我提交我的Youtube视频网址时,页面停留在同一条路线上。 这是我的输出的图像:

 enter image description here

因此,似乎正在调用路由,但在Web浏览器中页面URL并未更改。是否有人知道这种可能的原因。 谢谢, 问候。

1 个答案:

答案 0 :(得分:1)

由于您使用的是javascript发出请求,因此只有javascript会遵循您的重定向。

您可以做的是代替从服务器发送重定向,而是发送特殊代码,该代码将触发客户端javascript代码中的手动重定向(window.location.href = ...)。