http 204 响应 returns iOS 中的空白页,有没有办法阻止它?
A http 204 response returns a blank page in iOS, is there a way to stop this?
之前可能有人问过这个问题,但我似乎找不到解决方案,如果是这种情况,我们深表歉意。
我有一个使用 express 的简单节点应用程序正在开发中。 post 路由 returns 一个 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 中,这符合预期,post 更新了用户数据,而页面在其他方面保持不变。在 iOS 中,加载了一个空白页面。
有没有办法阻止空白页出现在 iPhones/iPads 上?
非常感谢。
注意:https://simplenotesapp.herokuapp.com/fluids 是我想要的模型,重要的是 204 不会加载新页面,因为您会看到,一旦用户回答了问题并且在底部提交它们,正确的答案就会出现。
这似乎是某些浏览器中的一个已知问题:
https://forums.developer.apple.com/thread/70226
https://bugs.chromium.org/p/chromium/issues/detail?id=368717
作为变通方法,您可以在网页中使用 Javascript 和 Ajax 来 post 您的表单而不是默认表单 post 然后当前页面将完全不受影响。
只需将提交按钮连接到您的 Javascript 并执行 e.preventDefault() 以防止默认表单 posting。然后您的 JS 可以 post 表单而不影响当前页面。
之前可能有人问过这个问题,但我似乎找不到解决方案,如果是这种情况,我们深表歉意。
我有一个使用 express 的简单节点应用程序正在开发中。 post 路由 returns 一个 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 中,这符合预期,post 更新了用户数据,而页面在其他方面保持不变。在 iOS 中,加载了一个空白页面。
有没有办法阻止空白页出现在 iPhones/iPads 上?
非常感谢。
注意:https://simplenotesapp.herokuapp.com/fluids 是我想要的模型,重要的是 204 不会加载新页面,因为您会看到,一旦用户回答了问题并且在底部提交它们,正确的答案就会出现。
这似乎是某些浏览器中的一个已知问题:
https://forums.developer.apple.com/thread/70226
https://bugs.chromium.org/p/chromium/issues/detail?id=368717
作为变通方法,您可以在网页中使用 Javascript 和 Ajax 来 post 您的表单而不是默认表单 post 然后当前页面将完全不受影响。
只需将提交按钮连接到您的 Javascript 并执行 e.preventDefault() 以防止默认表单 posting。然后您的 JS 可以 post 表单而不影响当前页面。