【问题标题】:Blocking issue with AJAX using JQuery使用 JQuery 的 AJAX 阻塞问题
【发布时间】: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 错误处理程序调用时正确中止,但似乎新页面请求仍在等待回调完成。如果没有正在进行回调,则新页面请求是即时的。有人知道怎么回事吗?

【问题讨论】:

标签: jquery ajax


【解决方案1】:

感谢您的帮助。结果问题与 asp.net 序列化访问会话以防止更新冲突的页面请求的方式有关。在页面指令中将会话设置为“只读”解决了问题。但是,如果页面写入会话变量,那么这将是一个问题。一种解决方法是交叉发布到允许会话更新的另一个页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 2012-07-10
    • 1970-01-01
    相关资源
    最近更新 更多