Try'n again。私は明らかに質問を述べたとは思わない。JQueryを使用したAJAXのブロック問題
大きな問題がありました。私は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エラーハンドラでは強制的に中止されますが、新しいページリクエストがコールバックが完了するのを待っているようです。進行中のコールバックがない場合、新しいページ要求は瞬間です。誰が何が起こっているのか知っていますか?
よく似たような回答ですが、あまりよくない質問があります:http://stackoverflow.com/questions/806184/jquery-ajax-post-blocking-form-submit – karim79