ios - http 204 响应在 iOS 中返回一个空白页面,有没有办法阻止这种情况?
问题描述
以前可能有人问过这个问题,但我似乎找不到解决方案,如果是这种情况,我们深表歉意。
我有一个使用 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 上?
提前谢谢了。
注意:https ://simplenotesapp.herokuapp.com/fluids是我要实现的目标的模型,重要的是 204 不会加载新页面,因为一旦用户回答了问题,您就会看到并在底部提交,出现正确答案。
解决方案
在某些浏览器中,这似乎是一个众所周知的问题:
https://forums.developer.apple.com/thread/70226
https://bugs.chromium.org/p/chromium/issues/detail?id=368717
作为一种变通方法,您可以在您的网页中使用一些带有 Ajax 的 Javascript 来发布您的表单,而不是默认的表单发布,这样当前页面就不会受到任何影响。
只需将提交按钮连接到您的 Javascript 并执行 e.preventDefault() 以防止默认表单发布。然后您的 JS 可以在不影响当前页面的情况下发布表单。
推荐阅读
- python - 是否可以在函数内部创建一个键类型为 UniTuple 的 numba dict
- c++ - 值方法重载的用例在可选中返回 const rvalue
- bash - 当错误是stdout输出文件不存在时记录stderr输出?
- react-native - 反应本机博览会浏览器永远加载没有应用程序日志
- kotlin - Ktor EmbeddedServer 未在测试中启动
- java - 有没有办法在平移和缩放时锚定多个按钮和视图?
- kotlin - Kotlin 变量推断类型(MutableMap
)..地图 )。这是什么意思? - ibm-cloud - 如何在 Python 应用程序中使用 COS 操作我的 VPC(虚拟私有云)实例?(IBM 云)
- android - 我的电脑上 Flutter 安装不完整
- python - 为什么以下代码给出的答案与分析答案相去甚远?