gpt4 book ai didi

javascript - 如何避免使用 Express 在 Node.js 中重新发送刷新数据

转载 作者:搜寻专家 更新时间:2023-11-01 00:18:30 26 4
gpt4 key购买 nike

首先,我要为我的英语道歉。

我有一个使用 Express 和 Jade 的 Node.js 应用程序。我的主页有一个表格,允许人们注册。我通过 POST 发送数据。我有一个这样的处理程序:

app.post('/userCreate', user.create);

和:

exports.create = function(req, res){
//creates the user in the database
res.render('./game/main'); //goes to the main game page
}

我的问题是,当人们注册时,我呈现主页,在 URL 中出现“localhost:3000/userCreate”。因此,如果我按 F5,所有数据都会通过 POST 再次发送,因为它再次捕获“/userCreate”,并尝试创建另一个用户。

我认为可以在创建用户后更改 URL,但我意识到“呈现”和“重定向”方法都不会更改它。

我一直在阅读有关 post-redirect-get 模式的文章,但我不知道如何在没有表单的情况下进行获取,我的意思是,通过 javascript 而不是 HTML。

最佳答案

问题出在这里:

res.render('./game/main');  //goes to the main game page

您实际上并没有“转到”主游戏页面,而是呈现当前 url 的 View 。相反,您应该将浏览器重定向到另一条路线:

res.redirect('/game'); // Or whatever url you have

并为该 url 创建一个单独的路由:

app.get('/game', game.index);

然后让该路由渲染游戏:

exports.index = function (req, res) {
res.render('./game/main');
};

现在 f5 将重新加载游戏页面而不是表单 POST。即使您想使用与表单相同的 url,您也应该重定向到相同 url 的 GET 路由,以防止重新发布。

关于javascript - 如何避免使用 Express 在 Node.js 中重新发送刷新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com