我正在对某些数据进行更新,然后尝试重新加载我所在的当前页面。
我发现了状态代码,该状态代码使我可以将重定向方法从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);
})
})
答案 0 :(得分:0)
您正在执行PUT
的事实必须表示您是通过Ajax调用来执行此操作,而不是在URL栏中键入内容。 Ajax调用本身不会在浏览器中显示内容。他们将内容返回到您的Javascript。
如果要遵循重定向并在浏览器中显示重定向的页面内容,则必须检查Javascript中Ajax调用的响应,看看它是3xx状态码,然后从响应,然后将window.location
设置为重定向的URL,以使浏览器显示重定向的页面。