javascript - 增量加载网页 : Where can I put: $ ("#LoadingImage"). Hide();

标签 javascript jquery ajax

我对 JavaScript 不太有经验。请看下面的代码:

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script>
<script type = "text/javascript">

    function GetSQLTable() {
        //alert($("#<%=fieldGroupReferences.ClientID%>")[0].value)
        var str = $("#<%=fieldGroupReferences.ClientID%>")[0].value
        var res = str.split(",");
        for (var i = 0; i < res.length; i++) {
            $("#LoadingImage").show();
            var div = document.createElement('div');
            div.id = "div" + i
            document.body.appendChild(div);

            //alert(res[i]);
            $.ajax({
                type: "POST",
                url: "Default3.aspx/GetSQLTable",
                data: '{username: "' + $("#<%=fieldUserName.ClientID%>")[0].value + '", terminalname: "' + $("#<%=fieldTerminalName.ClientID%>")[0].value + '", terminalip: "' + $("#<%=fieldTerminalIP.ClientID%>")[0].value + '", mappingid: "' + res[i] + '", usergroup: "' + $("#<%=fieldUserGroup.ClientID%>")[0].value + '"}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess(i,res.length),
                failure: function (response) {
                    //alert(response.d);
                    alert('there was an error loading the webpage')
                }
            });
        }
        function OnSuccess(i,totalrows) {
            return function (response) {
                if (response.d != "") {
                    document.getElementById('div' + i).innerHTML = document.getElementById('div' + i).innerHTML + '<br>' + '<br>' + response.d;
                }
            }
        }
    }
    window.onload = GetSQLTable
</script> 

代码逐步构建一个网页,即在准备就绪时获取 x 个 HTML 表格并将其显示到网页上。这有效。

问题是我不知道如何在网页完成后删除 LoadingImage,即 $("#LoadingImage").hide();。 OnSuccess 被调用 x 次,具体取决于返回的表数量,因此我无法将其放在那里。

最佳答案

一种方法是计算成功调用 onSuccess() 的次数,并在调用完成后隐藏加载图像:

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script>
<script type = "text/javascript">

    function GetSQLTable() {
        //alert($("#<%=fieldGroupReferences.ClientID%>")[0].value)
        var str = $("#<%=fieldGroupReferences.ClientID%>")[0].value
        var res = str.split(",");
        var numSucceeded = 0;
        for (var i = 0; i < res.length; i++) {
            $("#LoadingImage").show();
            var div = document.createElement('div');
            div.id = "div" + i
            document.body.appendChild(div);

            //alert(res[i]);
            $.ajax({
                type: "POST",
                url: "Default3.aspx/GetSQLTable",
                data: '{username: "' + $("#<%=fieldUserName.ClientID%>")[0].value + '", terminalname: "' + $("#<%=fieldTerminalName.ClientID%>")[0].value + '", terminalip: "' + $("#<%=fieldTerminalIP.ClientID%>")[0].value + '", mappingid: "' + res[i] + '", usergroup: "' + $("#<%=fieldUserGroup.ClientID%>")[0].value + '"}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess(i,res.length),
                failure: function (response) {
                    //alert(response.d);
                    alert('there was an error loading the webpage')
                }
            });
        }
        function OnSuccess(i,totalrows) {
            return function (response) {
                if (response.d != "") {
                    document.getElementById('div' + i).innerHTML = document.getElementById('div' + i).innerHTML + '<br>' + '<br>' + response.d;
                    numSucceeded++;
                    if (numSucceeded === totalrows) {
                      $("#LoadingImage").hide();
                    }
                }
            }
        }
    }
    window.onload = GetSQLTable
</script> 

关于javascript - 增量加载网页 : Where can I put: $ ("#LoadingImage"). Hide();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24893289/

相关文章:

php - 我如何根据 while 循环中 3 的差异计数给 div 背景颜色

javascript - 将 ng-click 连接到 Controller 功能

jQuery 验证插件 - $.blur 上的验证似乎在升级到 1.9 时发生了变化

javascript - jQuery 改变按钮属性

javascript - JSON 到 HTML - 我被正式难住了

javascript - 自动构建查询字符串以通过 ajax 发送表单

javascript - 在responseHTML中执行JavaScript

javascript - 如何使用 UMD 定义单个对象构造函数?

javascript - raphael.js 笔划/路径宽度似乎不起作用

javascript - 更改 window.location.href 时不会将页面滚动到底部