这应该很简单,但如果我能解决这个问题,我会很高兴。只是试图让我的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都在完成....
答案 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,感谢这个指针,我这样做也是为了确保所有内容都已加载,还会在屏幕上留下通知一段时间。