【发布时间】:2009-06-24 16:56:26
【问题描述】:
再试一次。不要以为我把问题说清楚了。
有大问题。我与之签约的公司要求我将网站转换为使用 AJAX 延迟加载。为此,我使用 Page 方法来加载控件。 Javascript 看起来像这样......像冠军一样工作!
$(document).ready(function() {
var clientID = '#' + '<%= BackUpPower.DivBackUpPower.ClientID %>'
if ($(clientID)) {
$.ajax({
type: "POST",
url: "Dashboard.aspx/GetBackUpControl",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
timeout: 15000,
success: function(result) {
$(clientID).css({ "display": "none" });
$(clientID).removeClass('loading');
$(clientID).attr('innerHTML', result.d);
$(clientID).fadeIn("slow");
},
error: function(xhr) {
//alert("GetBackUpControl failed");
}
});
}
});
服务器端代码如下所示...
[网络方法]
public static String GetBackUpControl()
{
Page page = new Page();
UserControls_BackupPowerForm ctl = (UserControls_BackupPowerForm)page.LoadControl("~/UserControls/BackupPowerForm.ascx");
ctl.ID = "BackupPower";
page.Controls.Add(ctl);
ctl.HostPage = "Dashboard";
ctl.ActiveTimeRange = TimeRange.LastMonth;
try
{
ctl.DataBindChart();
}
catch (Exception caught)
{
LoggingAdapter.LogError(caught.Message, "Error Generating Chart", caught);
return String.Empty;
}
StringWriter writer = new StringWriter();
HttpContext.Current.Server.Execute(page, writer, false);
return writer.ToString();
}
我遇到的问题是,当长时间运行的回调正在进行时,用户尝试通过单击超链接来切换页面,系统在这样做之前会等待很长时间。单步执行代码我看到回调在新页面请求和 JQuery 错误处理程序调用时正确中止,但似乎新页面请求仍在等待回调完成。如果没有正在进行回调,则新页面请求是即时的。有人知道怎么回事吗?
【问题讨论】:
-
这里有一个类似但没有很好回答的问题:stackoverflow.com/questions/806184/…