以前可能有人问过这个问题,但我似乎找不到解决方案,所以如果是这种情况,我深表歉意。
我正在开发一个使用express的简单节点应用程序。其中一个帖子路由返回 http 204 并发送它,下面是我的代码:
router.post("/:id", function(req, res, next) {
if (!req.session.userId) {
res.status(204).send();
} else {
console.log(req.params.id);
User.findById(req.session.userId, function (err, user) {
if (err) return handleError(err);
const nameForDatabase = req.params.id + "Correct";
console.log(nameForDatabase);
user.set({[nameForDatabase]: req.body.correct});
user.save(function (err, updatedUser) {
if (err) return handleError(err);
console.log(updatedUser);
});
});
res.status(204).send();
}
});
在桌面版 Chrome 中,其行为符合预期,帖子会更新用户数据,而页面则保持不变。在 iOS 中,加载空白页面。
有没有办法阻止 iPhone/iPad 上出现空白页面?
提前谢谢了。
NB: https://simplenotesapp.herokuapp.com/fluids https://simplenotesapp.herokuapp.com/fluids是我想要的模型,重要的是 204 不会加载新页面,因为您会看到,一旦用户回答了问题并在底部提交了问题,就会出现正确的答案。
看起来这在某些浏览器中是一个众所周知的问题:
https://forums.developer.apple.com/thread/70226 https://forums.developer.apple.com/thread/70226
https://bugs.chromium.org/p/chromium/issues/detail?id=368717 https://bugs.chromium.org/p/chromium/issues/detail?id=368717
作为解决方法,您可以在网页中使用一点 Javascript 和 Ajax 来发布表单,而不是默认的表单发布,这样当前页面就不会受到任何影响。
只需将提交按钮连接到您的 Javascript 并执行 e.preventDefault() 即可阻止默认表单发布。然后你的 JS 可以发布表单而不影响当前页面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)