在AJAX完成时加载GIF

时间:2013-11-13 16:23:15

标签: javascript jquery ajax

这应该很简单,但如果我能解决这个问题,我会很高兴。只是试图让我的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并停止,并且都没有出现,所以我错过了一些明显的东西:S当我在firefox中检查控制台时,我可以看到所有的POST都在完成....

2 个答案:

答案 0 :(得分:3)

您应该添加Ajaxstart并将全局事件处理程序停止到文档节点,如此

$(document).ajaxStart(function () {

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

});

答案 1 :(得分:1)

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

所以不要这样: -

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

我现在有: -

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

我认为这是因为它的ajax运行的文件不是div,虽然我的理解可能不是100%准确,至少这个有效,所以请告诉我,如果我误解了这个! :)

@jbl,感谢这个指针,我这样做也是为了确保所有内容都已加载,还会在屏幕上留下通知一段时间。