从ASP代码后台向Javascript函数传递参数

4

我有一个长时间的过程,我想展示给用户一个进度条,在我的带有母版页的Webform中传递一个参数(百分比)到Javascript函数。

我有以下代码:

<script type="text/javascript"> 
        function updateProgress(percentage) {          
            document.getElementById('ProgressBar').style.width = percentage+"%";
        }
</script>

并且:

<div class="progress progress-striped active progress-success" style="height: 43px">
      <div id="ProgressBar" class="progress-bar" role="progressbar" runat="server"
          aria-valuemin="0" aria-valuemax="100" style="width: 0%">
      </div>
</div>

在我的后端代码中,我使用以下代码将参数传递给函数:
// Report progress >> ~ 18%                   
string updateProgress = "18";
ClientScript.RegisterStartupScript(this.GetType(), "updateProgress", "updateProgress('" + updateProgress + "');", true);

当我运行代码时,进度条从未从0%移动。我想通过在后台调用该函数并使用新参数更新百分比完成情况来保持更新,直到达到100%。我已经查看了论坛,但是我找不到需要做什么才能使其正常工作的方法。有任何想法吗?

1
您的服务器代码注册了一个脚本,该脚本将在向客户端返回响应时执行。在 Web 应用程序中,服务器和客户端大部分时间都是断开连接的。这就像发送一封信。客户端正在等待您的响应,您无法在编写时向他们提供状态更新。 - RobH
好问题。在这个过程中,你访问了数据库吗? - lalborno
@lalborno。是的,在这个过程中进行了金融计算,并且有大量查询涉及到多个表格。 - Kinyanjui Kamau
@KinyanjuiKamau - 当服务器正在处理数据时,您可以显示一个不明确的加载图标,例如来自ajaxloader.info的图标,或者您需要更高级一些,从客户端轮询状态更新。 - RobH
2
你不需要使用SignalR,你可以通过WebMethod和JavaScript来实现。 - RobH
显示剩余2条评论
1个回答

10

试试这种方式

    string updateProgress = "18%";
    ClientScript.RegisterStartupScript(this.GetType(), "updateProgress", "updateProgress('" + updateProgress + "');", true);

脚本 AS

   <script type="text/javascript">
    function updateProgress(percentage) {
        document.getElementById("ProgressBar").style.width = percentage;
    }
  </script>

ASPX页面

   <div class="progress progress-striped active progress-success" style="height: 43px">
        <div id="ProgressBar" runat="server" class="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100"
            style="width: 0px;" >
        </div>
    </div>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接