从Jquery / JavaScript背后的代码访问静态属性值

时间:2018-09-04 12:29:44

标签: javascript c# jquery asp.net ajax

我必须将最大值和百分比值读入jquery函数。我尝试将这些值读入页面加载时始终返回0的隐藏变量和Session变量中。 这些是我的财产:

    public static int Max { get; set; }
    public static int Percent { get; set; }

这是我的代码背后:

      [WebMethod]
      public static string Test()
      { 
          var y = 0;
          var max = 100000;
          Max = max;
          for(int i = 0; i < max; i++)
          {
              y++;
              Percent = y++; 
          }
          if (y > max)
              return "Success";
          else
            return "Fail";
      }

这是单击按钮后我的ajax调用。我正在尝试使用另一个函数读取每个i的最大值和百分比值。我不确定如何将这些值调用到另一个函数中。

<asp:Button ID="btnGetData" runat="server" Text="Get Data" />

   $(document).ready(function () {
     $$('btnGetData').click(function () {
         function readValues();
         $.ajax({
             type: 'POST',
             url: 'Test.aspx/Test',
             data: "{}",
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             async: true,
             success: function (Result) {
                 alert(Result.d);
             },
             error: function (Result) {
                 alert('Error!');
             }

         });
     });
 });
function readValues(){
 var t = <%= Max%>;
 var p = <%= Percent%>;  //This has to be updated every few seconds until 
                             //the for loop is finished.
}

1 个答案:

答案 0 :(得分:1)

我想您要达到的目标与此问题类似: Simple BackgroundWorker is not updating label on web page

基本上,您的选择是:

  • 重新架构服务器端代码,以便操作从第一个调用开始(并立即返回),然后前端可以调用其他函数/端点以查看当前进度并进行报告(可能是每秒使用计时器一次或类似时间)
  • 使用某些工具启用双向通信(例如SignalR),以便服务器可以将其进度报告给客户端。

对于StackOverflow的简单回答,这两种方法都可能涉及太多。我建议尝试围绕这些建议进行汇总,如果遇到问题,请回来。