在没有用户页面重新加载的情况下使用来自GET请求的数据

时间:2015-02-22 18:45:19

标签: node.js express get socket.io

所以,主题是Node.js + express + ejs + socket.io + mongoose所有最新版本的单页Web应用程序。

让我们在浏览器的地址栏“www.app.com/ 数据”中设想用户输入。我希望根据此数据获取db的响应,将其发送回用户并为其呈现基本的“www.app.com”页面,并在其中实现db响应。

我很好奇两个选项:在有和没有页面重新加载的情况下执行此操作的最佳方法是什么,例如,如果用户已经在页面上并且我不想重新加载它 - 只需相应地更改为db响应。

我可以从他的获取请求中获取这些数据:

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 - 他与它们脱节。

你能说清楚我的困惑吗?

1 个答案:

答案 0 :(得分:1)

最后我在URI中使用URI Fragment identifier,即# 如果用户输入http://YourAwesomeApp/#hashtag,您可以使用此侦听器捕获hashtag

window.onhashchange = function () {        
        var hash = location.hash.substr(location.hash.indexOf("#") + 1);
        //now hash = hashtag, do your stuff.      
};

完全符合我的需要。

请注意,如果您通过JS(window.onhashchange)更改哈希,location.hash = something也会触发。