【问题标题】:Problem with Jquery Ajax and Page Load Session assigning?Jquery Ajax 和页面加载会话分配有问题吗?
【发布时间】:2011-08-16 09:53:28
【问题描述】:

我在 asp.net 中有一个后台工作人员。我想传递正在更改的计数百分比并将其显示在 jquery 进度条中。代码就像一个魅力, 进度条百分比显示... 0% --> 10% --> 20% --> .... -->100%

但不幸的是,当我在页面 Load 中分配 Session["UserName"]="abc" 时,它不会执行异步回发!进度条百分比显示... 0% --- (几秒后直接) --> 100%

jQuery

$(document).ready(function() {
            $("#progressbar").progressbar();
                  setTimeout(updateProgress, 100);
        });

       function updateProgress() {
                  $.ajax({
                      type: "POST",
                      url: "Downloader.aspx/GetData",
                      data: "{}",
                      contentType: "application/json; charset=utf-8",
                      dataType: "json",
                      async: true,
                      success: function(msg) {
                          // Replace the div's content with the page method's return.

                          $("#progressbar").progressbar("option", "value", msg.d);
                      }
                  });
              }

下载器.aspx.cs

static BackgroundWorker _bw;
public static int Percent { get; set; }

    protected void Button1_Click(object sender, EventArgs e)
    {
        _bw = new BackgroundWorker
        {
            WorkerReportsProgress = true,
            WorkerSupportsCancellation = true
        };
        _bw.DoWork += bw_DoWork;
        _bw.ProgressChanged += bw_ProgressChanged;
        _bw.RunWorkerCompleted += bw_RunWorkerCompleted;

        _bw.RunWorkerAsync("Hello world");
    }

    void bw_DoWork(object sender, DoWorkEventArgs e)
    {

        for (int i = 0; i <= 100; i += 20)
        {
            if (_bw.CancellationPending) { e.Cancel = true; return; }
            _bw.ReportProgress(i);
            Thread.Sleep(1000);
        }
        e.Result = 123;
    }

    void bw_RunWorkerCompleted(object sender,
                                       RunWorkerCompletedEventArgs e)
    {
            percentage.Text = "Complete: " + e.Result;      // from DoWork
    }

    void bw_ProgressChanged(object sender,
                                    ProgressChangedEventArgs e)
    {
        Percent = e.ProgressPercentage;
    }

    [WebMethod]
    public static int GetData()
    {
        return Percent;
    }

上面的代码一直有效,直到我在页面加载中添加了 Session["UserName"]="abcd"

下载器.aspx.cs

   protected void Page_Load(object sender, EventArgs e)
    {  
        Session["userName"] = "abcd!";
    }

谁能告诉我发生了什么事?我已经花了 2 天的时间来弄清楚,但仍然不知道 T__T

【问题讨论】:

    标签: c# jquery asp.net progress-bar


    【解决方案1】:

    我猜你需要设置会话条件,写一些类似 if post back 或类似的东西。不过不确定.. 如果这不是问题,您是否也可以尝试将其移至页面预渲染。

    抱歉,我忘记了网络表单。

    【讨论】:

      猜你喜欢
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多