1

这应该很简单,但如果我能解决的话,我会很高兴的。只是想在我的 ajax 正在处理时显示一个 div,然后在完成后隐藏(我在里面放了一个睡眠纯粹是为了测试它的工作,因为它在本地加载得如此之快,我不确定它是否工作)!

html 页面在脚本中有以下代码:-

$(document).ready(function(){
             $("#loadingGIF").ajaxStart(function () {
                    $(this).show();
                });

            $("#loadingGIF").ajaxStop(function () {
                window.setTimeout(partB,5000)

                $(this).hide();
            });

            function partB(){
                //just because
                }
                var scenarioID = ${testScenarioInstance.id}
                var myData = ${results as JSON}
                populateFormData(myData, scenarioID);
            });

然后在我的页面中有一个 div 像这样(我可以在刚刚隐藏的页面的源代码中看到): -

<div id="loadingGIF" ><img src='${application.contextPath}/images/spinner.gif' height="50" width="50"></div>

准备好的代码然后关闭并调用它: -

function populateFormData(results, scenarioID) {
    $table = $('#formList')
    for(var i in results){
        var formIDX = (results[i]["forms_idx"])
        var formID = (results[i]["form_id"])
        appendSubTable(formIDX, scenarioID, $table, formID);
    }
}

其中多次引用此调用多个 AJAX 帖子:-

function appendSubTable(formIDX, scenarioID, $table, formID) {
    var $subTable = $table.find("#" + formIDX).find('td:eq(1)').find("div").find("table")
    var url = "**Trust me this bits OK ;) **"
    $.post(url, {
        formIDX : formIDX, scenarioID : scenarioID, formID :formID 
    }, function(data) {
        $subTable.append(data)
    }).fail(function() {

    });
}

任何指点都感激不尽...

有趣的是,我在我的 ajaxstart 和 stop 中插入了一些警报,但都没有出现,所以我错过了一些明显的东西:S 当我在 Firefox 中检查控制台时,我可以看到我所有的 POST 都在完成......

4

2 回答 2

3

您可能应该像这样将 Ajaxstart 和 stop 全局事件处理程序添加到文档节点

$(document).ajaxStart(function () {

  $("#loadingGIF").show();

});
于 2013-11-13T16:41:11.893 回答
1

我意识到我的问题,我需要注册 ajaxstart 并停止到文档而不是 div!

所以代替这个: -

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

我现在有: -

     $(document).ajaxStart(function () {
            $("#loadingGIF").show();
        });

我认为这是因为它是 ajax 运行的文档而不是 div 虽然我的理解可能不是 100% 准确至少这有效所以请告诉我我是否误解了这一点!:)

@jbl,感谢这个指针,我这样做也是为了让屏幕上的通知多留一会儿,以确保所有内容都已加载。

于 2013-11-13T16:40:55.790 回答