所以,主题是 Node.js + express + ejs + socket.io + mongoose 所有最新版本上的单页 Web 应用程序。
让我们想象用户在浏览器地址栏中输入“www.app.com/data”。我想根据此数据从数据库获取响应,将其发送回用户并为他呈现基本的“www.app.com”页面,并在其中实现数据库响应。
我对两个选项感到好奇:有或没有页面重新加载的最佳方法是什么,例如,如果用户已经在页面上并且我不想重新加载它 - 只需相应地更改数据库响应。
我可以从他的 get 请求中获取这些数据:
app.get('/:id', function (req, res) {
console.log('got' + req.params.id);
///some db magic here... poof, response ready///
})
但是接下来我该怎么办呢?我正在考虑通过 sockets.io
发送响应,无论如何我都在使用它,但是我怎样才能在不重新加载用户页面的情况下结束这个 GET 呢?如果我必须发回一些东西,我可以通过使用 ejs 再次渲染此页面来响应,但是在重新加载时我不能依赖 sokets、cos - 他与它们断开连接。
你能解释一下我的困惑吗?
最佳答案
最后,我在 URI 中使用 URI 片段标识符
,即 #
。
如果用户输入 http://YourAwesomeApp/#hashtag
,您可以使用此监听器捕获 hashtag
:
window.onhashchange = function () {
var hash = location.hash.substr(location.hash.indexOf("#") + 1);
//now hash = hashtag, do your stuff.
};
它完全符合我的需求。
请注意,如果您通过 JS 更改哈希值 (location.hash = some
),window.onhashchange
也会触发。
关于node.js - 使用 GET 请求中的数据,无需重新加载用户页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28661766/