【问题标题】:jQuery Progress bar with ASP.NET Web Forms带有 ASP.NET Web 窗体的 jQuery 进度条
【发布时间】:2011-02-15 17:06:31
【问题描述】:

我正在尝试在我的 ASP.NET Web 窗体应用程序中使用 jQuery 进度条。我的目标是:

用户单击一个按钮,然后通过 ajax 发送一个请求,该请求执行大量操作(即生成一些 PDF) 由于此 PDF 生成有点耗时,我希望有一个 jQuery 进度条跟上迄今为止,总共有多少 PDF 已完成。我将如何在 AJAX 请求上启动此进程,然后每隔一段时间轮询该进程以查看它的运行情况?对于同时使用此应用程序的多个用户,我需要考虑哪些因素?有时我对浏览器应该如何与服务器通信等问题一头雾水,这可能是一个我没有看到的简单解决方案。

任何方向都将不胜感激。非常感谢您的所有帮助和时间。

【问题讨论】:

  • 我想也许我可以让进程不断更新数据库中的记录,然后我的 ajax 查询可以轮询该记录直到完成?我觉得有更好的方法,但也许这是一个不错的解决方案?有什么想法吗?

标签: jquery asp.net progress-bar


【解决方案1】:

只是为了让任何对我所做的事情感兴趣的人发布:

我使用了一次 AJAX 调用来启动 PDF 生成过程。该过程的每个步骤我都会使用生成状态更新数据库记录。然后我使用 javascript setTimeout() 调用另一个 ajax 方法来检索记录并显示当前进度。一旦生成完成,状态检查器 ajax 调用就会停止。

我知道这并不理想,如果这个网站要获得数千次点击,那就是为了做一个简单的进度条而对数据库进行大量读写。这是一个解决方案,在我看来甚至不是一个很好的解决方案,所以如果有人有他们做过的事情,我会非常愿意研究它。感谢大家对此事的帮助和想法。

【讨论】:

  • 另一种方法是使用会话。无需检查数据库,只需轮询在会话中检查数据的 Web 服务。这假设如果您更新 Session 值,它可以立即用于其他进程,我不确定。如果没有,那么您可以使用全局静态缓存,例如在 global.asax.cs 中创建一个静态 Dictionary ,使用一些与用户会话相关联的 id 作为在进程之间传递信息的一种方式。
【解决方案2】:

您可以尝试在单独的进程中开始生成 PDF,然后使用<asp:Timer> 来更新页面的进度,而不是使用 jquery 进度条。

【讨论】:

  • 我想我可以研究一下,我只是觉得这已经完成并且有解决这个问题的方法。特别是因为 jQuery 现在是 ASP.NET 项目的一部分。如果没有,那就没有,我只是想看看我的选择。感谢您的意见,我将开始研究它以了解它如何适合我的项目。
猜你喜欢
  • 2021-08-21
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
相关资源
最近更新 更多