Попробуй еще раз. Не думаю, что я четко сформулировал вопрос.
У меня большая проблема. Компания, с которой я заключаю контракт, попросила меня преобразовать сайт для отсрочки загрузки с использованием 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");
}
});
}
});
Код на стороне сервера выглядит следующим образом ...
[WebMethod]
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, но все равно кажется, что запрос новой страницы ожидает завершения обратного вызова. Если обратный вызов не выполняется, запрос новой страницы происходит мгновенно. Кто-нибудь знает, что происходит?