【发布时间】:2012-12-09 17:00:29
【问题描述】:
在 (upload.aspx) 后面的代码中,我有一个事件返回正在流式传输的字节数;当我调试它时,它工作正常。我想在进度条上反映从事件处理程序返回的数字,这就是我迷路的地方。我尝试使用 jQuery 的 .ajax() 函数。这就是我实现它的方式:
在我后面代码的 EventHandler 中,我添加了这段代码来调用 .ajax() 函数:
Page.ClientScript.RegisterStartupScript(this.GetType(), "UpdateProgress", "<script type='text/javascript'>updateProgress();</script>");
我的计划是,每当 eventHandler 函数更改正在流式传输的字节的值时,它都会调用 javascript 函数“updateProgress()”
.ajax() 函数“UpdateProgress()”如下:
function updateProgress() {
$.ajax({
type: "POST",
url: "upload.aspx/GetData",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (msg) {
$("#progressbar").progressbar("option", "value", msg.d);
}
});
}
我确保函数 GetData() 是 [System.Web.Services.WebMethod] 并且它也是静态的。所以我试图实现的工作流程是: - 点击上传按钮 - 后台代码开始执行并触发 EventHandler - EventHandler 调用 .ajax() 函数 - .ajax() 函数检索正在流式传输的字节并更新进度条。
当我运行代码时;一切运行良好,除了 .ajax() 仅在上传完成时执行(并且进度条也仅在完成上传时更新);即使我每次都在 eventHandler 函数中调用 .ajax() 函数,如上所示...
我做错了什么?我这样想对吗?还有什么我应该添加的可能是 updatePanel 什么的吗?
【问题讨论】:
-
upload.aspx/GetData返回什么? -
它返回一个int;它是:[System.Web.Services.WebMethod] public static int GetData() { return Convert.ToInt32(byteStreamed); }
-
一开始你有没有把进度条的默认值设置为零?像这样
$("#progressbar").progressbar({ value: 0 }); -
我在 $(document).ready(function () { $("#progressbar").progressbar({ value: 0 }); }); 中做到了
标签: c# javascript jquery ajax progress-bar