重定向未正确重新加载页面

时间:2019-10-31 16:05:41

标签: javascript node.js express

我正在对某些数据进行更新,然后尝试重新加载我所在的当前页面。

我发现了状态代码,该状态代码使我可以将重定向方法从put更改为get(303)。此功能有效,当完成时,我得到“完成加载get localhost:3000 /”。但是我在“ /”处预定义的路由无法运行。

路由“ /”应该获取一些数据,使用布尔值对其进行过滤,然后将其传递给UI。当您单击窗口上的刷新按钮时,此方法有效。但是由于某种原因,重定向无法正常工作。

我已附上图片供使用。

这是我遇到问题的重定向的推入路线。

router.put('/api/update/:id', function(req, res) {
  var id = req.params.id;
  Burger.update(id, function(results) {
    console.log(id);
    console.log(results);
  })
  res.redirect(303, '/');
})

这是当我按下刷新按钮时正确运行的“ /”路由。但是当我使用上面的重定向路径时却没有。

router.get('/', function(req, res) {
  Burger.all(function(data) {
    let eaten = [];
    let notEaten = [];
    // Looping through and depicting which burgers have been eaten and which ones have not.
    for (var i = 0; i < data.length; i++) {
      if (data[i].devoured === 0) {
        notEaten.push(data[i]);
      } else {
        eaten.push(data[i])
      }
    }
    // console.log(eaten);
    // console.log('============');
    // console.log(notEaten);
    var handleBarsObject = {
      eaten: eaten,
      notEaten: notEaten
    }
    // console.log(handleBarsObject);
    res.render('index', handleBarsObject);
  })
})

1 个答案:

答案 0 :(得分:0)

您正在执行PUT的事实必须表示您是通过Ajax调用来执行此操作,而不是在URL栏中键入内容。 Ajax调用本身不会在浏览器中显示内容。他们将内容返回到您的Javascript。

如果要遵循重定向并在浏览器中显示重定向的页面内容,则必须检查Javascript中Ajax调用的响应,看看它是3xx状态码,然后从响应,然后将window.location设置为重定向的URL,以使浏览器显示重定向的页面。