【问题标题】:Sending progress message from Server to Client using Ajax使用 Ajax 从服务器向客户端发送进度消息
【发布时间】:2009-07-04 16:09:42
【问题描述】:

我正在使用 UpdatePanel 触发按钮单击事件,该事件将大约 100 多个文件保存在指定文件夹中。 我希望服务器向客户端更新正在保存的文件的状态和数量。

protected void btnSave_Click(...){    
  var filesToSave = GetFilesToSave();
  foreach(var fileToSave in filesToSave){
    SaveProcessedFile(fileToSave);//It takes almost 30seconds to save a file
    UpdateStatusOnClient(fileToSave); //Don;t know what should be done here???????????
  }
}

我正在寻找“UpdateStatusOnClient”的一些实现,从中我可以向客户端发送所需的消息,或者异步更新标签消息,以便客户端知道正在保存的文件的进度和状态。

谢谢。

【问题讨论】:

  • 当您说“保存大约 100 多个文件”时,您的意思是您的页面正在上传 100 个文件吗?

标签: c# ajax asp.net-ajax updatepanel


【解决方案1】:

这不是那么容易...你不能主动从服务器发送东西到客户端。只有客户端可以请求查询状态。

现在您已经有一个正在运行的请求(单击按钮)。但这只有在保存 100 个文件后才能完成。理论上,您可以通过写入响应然后刷新它来发送少量数据以确保数据被传输。我从未尝试过,而且我不知道有任何 Ajax 客户端可以处理这样的响应。

我要做的是:将当前状态保存在 ASP.NET 会话对象中,然后在计时器上发出另一个 Ajax 请求,以每隔 X 秒查询一次状态。请注意,在您执行此操作时按钮上的请求仍在运行(这可能会导致问题)。您可能想改为触发异步操作。

【讨论】:

    猜你喜欢
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2017-07-30
    相关资源
    最近更新 更多