【问题标题】:page hanged when web method is executes执行 web 方法时页面挂起
【发布时间】:2011-05-06 09:44:40
【问题描述】:

我正在使用 ajax-web 方法(使用 json)将数据保存在数据库中并在需要时选择它。现在,每当我调用 web 方法时,在处理该方法时,整个页面都会挂起,并且无法对页面进行任何操作。

我想在从 ajax 调用 web 方法时启用所有功能,例如在 web 方法完成之前显示加载图像。

我的代码如下:

function getvalues(id, tab, pageNo) {
    $.ajax({
        type: "POST",
        url: "default.aspx/LoadData",
        data: "{'id':'" + id + "','tab':'" + tab + "','pageNo':'" + pageNo + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            if (msg.d.length > 0) {
                var dvComment = document.getElementById("Comments");
                dvComment.innerHTML += msg.d;
            }  
        },
        async: true,
        error: function(xhr, status, error) {
            // alert(xhr.statusText);
        }
    });
}

所以现在当它在页面挂起的整个过程中将 html 呈现到 DIV 中时。

【问题讨论】:

    标签: asp.net ajax json webmethod


    【解决方案1】:

    要显示加载图像,您可以使用ajaxStart 方法,如下所示:

    $("#loading").ajaxStart(function(){
        $(this).show();
    });
    

    #loading 在哪里:

    <img id="loading" src="images/ajaxload.gif" alt="loading..." style="display:none"/>
    

    隐藏加载图片:

    $("#loading").ajaxComplete(function(){
       $(this).hide();
    });
    

    【讨论】:

    • 非常感谢您的回复,这解决了我的一半问题,但我希望页面可以点击,就像我可以在执行 web 方法期间滚动页面一样,或者我应该能够选择一些文字等。
    • 我的页面中还有一个 java 脚本计时器函数,它将在每分钟后调用以更新使用相同 json-ajax 调用 web 方法的 的内容。问题就在那里,并且每分钟更新时间方法都会调用页面再次挂起一段时间。请告诉我一种摆脱这种网络方法执行的丑陋行为的方法。
    • @tanweer 这不是网络方法的丑陋行为。您应该在启动 ajax 请求后禁用计时器并在 successerror 委托中重新启用它,以便在第一个请求完成之前不会触发另一个请求。我认为这是您的页面变慢的最可能原因。
    猜你喜欢
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2015-01-17
    • 2012-05-24
    相关资源
    最近更新 更多