【问题标题】:How to refresh page after an event?活动结束后如何刷新页面?
【发布时间】:2017-01-26 14:32:45
【问题描述】:

我找到了this similar question,但我认为它不能解决我的问题。对于我的场景,我的项目中有 updating / saving 的数据。

场景

申报人想更新他/她在(PC1)的记录

那么(PC2) 已经打开了待处理请求列表的页面。

我想要的是在每次来自(PC1) 的请求之后,如果(PC2) 中的页面当前处于打开状态,它将自动刷新 - 无需用户手动重新加载(例如通过按 F5)。

【问题讨论】:

  • @LihauTan 在我想问的已接受答案中。如果我的链接一直在变化怎么办?
  • 如果您的后端是 dotnet,则选择 SignalR。信号器也有 nodejs 实现。 npmjs.com/package/signalrjs
  • @Developer 我会先研究一下如何使用它因为我还在学习网络编程。
  • @Dave - 你的后端技术是什么?是dotnet还是node还是java还是别的什么?

标签: javascript jquery


【解决方案1】:

您可以通过不同的方法来实现这一点,例如:

  • 长轮询:长轮询是一种事件驱动的通知,当有更改时服务器会响应(保持请求直到数据可用)
  • 短轮询 - 定期(例如,每 30 秒)通过 ajax 请求访问服务器以获取新数据

上述两种技术都是旧的,现在不推荐使用,因为您在现代浏览器中拥有 HTML5 WebSockets 和 WebRTC 等最新功能。你需要的是服务器端的推送,只要有变化。

如果您使用的是 dotnet 后端或其节点后端,我建议您查看 SignalR (http://www.asp.net/signalr),然后查看 SignalR (npmjs.com/package/signalrjs) 的节点实现。

ASP.NET SignalR 是一个面向 ASP.NET 开发人员的新库,它使 轻松开发实时网络功能。 SignalR 允许 服务器和客户端之间的双向通信。服务器可以 现在立即将内容推送到连接的客户端 可用的。 SignalR 支持 Web 套接字,并回退到其他 旧浏览器的兼容技术。 SignalR 包括用于 连接管理(例如,连接和断开事件), 分组连接和授权。

更新 - 刚刚在 SO 中看到了一个很棒的详细解释,它会给你更多的洞察力(可能是问题不同,但给出的答案会对你有所帮助) - In what situations would AJAX long/short polling be preferred over HTML5 WebSockets?

【讨论】:

  • 这对我来说变得越来越复杂了:D。我希望我能克服它,因为我刚开始学习网络
  • @Dave - 别担心。快乐编码:)
【解决方案2】:

见How to refresh another page using javascript without opening the same page in a new tab。

基本上你需要做的是:

//somewhere in your code you open a new tab
//maintain a reference to the window
var childWindow = window.open(initialURL);

//anywhere in your code, when you need to change the url of the window
//if you want to refresh that page, simply use newURL = initialURL
child.location.href = newURL;

【讨论】:

  • 我正在尝试您的建议 here 但刷新不起作用
  • "VM329:77Unsafe JavaScript 尝试从 URL 为 'fiddle.jshell.net/_display' 的框架中为来源为 'google.com.sg' 的框架启动导航。尝试导航的框架已被沙盒化,因此不允许导航其祖先。”您应该在您的网络应用上尝试一下
  • 在我的项目中使用它之前,我可以先测试它吗?
  • @Dave - PC1 和 PC2 在你的问题中意味着两个不同的用户在两台不同的计算机上,是吗?
  • @Developer 是的。可以刷新吗?
猜你喜欢
  • 1970-01-01
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-06
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
相关资源
最近更新 更多