我的应用程序假设在没有任何用户交互的情况下不断更新页面。标准是该页面必须存在,作为监视器上的一个额外窗口,以便用户可以看到实时更新的信息。
我在带有 Rails 的 jQuery 中使用 Ajax,我的问题是 - .erb 页面将 Ajax 保持打开状态多久?是否会有我必须刷新页面或重新初始化的地方?或者这根本不会成为问题?
我的应用程序假设在没有任何用户交互的情况下不断更新页面。标准是该页面必须存在,作为监视器上的一个额外窗口,以便用户可以看到实时更新的信息。
我在带有 Rails 的 jQuery 中使用 Ajax,我的问题是 - .erb 页面将 Ajax 保持打开状态多久?是否会有我必须刷新页面或重新初始化的地方?或者这根本不会成为问题?
Ajax 表示异步 Javascript 和 XML。它所做的是将请求发送到服务器并以异步方式处理它的答案;无需刷新页面。
对 HTTP 服务器的请求不会保持打开状态(除非您将其配置为保持连接打开,通常情况并非如此)。HTTP 协议是无状态的,这意味着您向服务器发出的每个请求都将被视为与之前的请求完全没有连接。事实上,要维护请求之间的状态,您必须在 Web 应用程序级别(在本例中为 rails)管理该状态,将浏览器会话的标识符发送到服务器(通常是本地存储在客户端 Web 浏览器 cookie 上的会话 ID)您的 Rails 应用程序可以对其进行处理,以识别打开的会话。
因此,除非您的前端正在与具有持久连接的 HTTP 服务器进行交互,否则您的服务器不会保持与 Web 浏览器打开的连接。它将发送它的响应并关闭连接。
AJAX 允许向服务器发出请求,并在不重新加载页面的情况下处理它的响应。http 服务器将打开连接,直到它响应您的 Web 浏览器请求,然后关闭连接,因此不会保持连续性。
要保持 erb 视图上的数据更新,您必须使用 jQuery 进行管理,每 x 时间发送一次请求。Bellow 是一个每 1 秒发出一次 ajax 请求的示例。
setInterval( "fetchDataAndUpdateView();", 1000 );
fetchDataAndUpdateView = function(){
jQuery.ajax({
url: "your-url",
success: function(){
//do something here to update your html with the data you got from the server
}
})
});