我通过getJSON加载div的图像url内容,当它完成时它会改变一个变量,所以我知道AJAX已经完成了
其他功能如何知道AJAX已完成?这就是我想要的:
用户导航到专辑div,然后它将检查AJAX是否完成。如果未完成AJAX,则会显示加载图像,但是当AJAX完成时,它如何知道AJAX已完成以停止显示加载图像?
我的想法:
1 /使用while循环连续检查AJAX状态变量会冻结所有内容但实际上不起作用。
2 /我无法将所有导航代码放在回调函数中,因为我希望用户可以在加载AJAX时自由进行。将它全部放在回调函数中会产生一堆代码
如何解决这个问题?
答案 0 :(得分:3)
你永远不应该“检查”AJAX是否通过轮询一个变量来完成,你应该注册一个回调,它将在完成时自动调用,最好使用jQuery的"deferred objects",例如
$.getJSON(...).done(function(data) {
// my ajax is finished!
});
最终,您不必将所有代码放入回调中,但您需要确保它最终通过回调调用。
答案 1 :(得分:2)
在ajax调用中有一个名为“success:function(data)”的扩展名,该数据包含从请求中获得的任何内容。
$.ajax({
type: "POST",
dataType="json",
url:url,
data:{id:x},
success : function(result){
//stop loading message here
}
答案 2 :(得分:1)
您可以使用全局ajax:{对于您不需要显示任何加载图片的请求,可以使用选项global:false
}
$(document).on('ajaxStart',function(event, jqxhr, settings){
//show loading img
})
.on('ajaxComplete',function(event, jqxhr, settings){
//hide loading img
})
答案 3 :(得分:1)
检查您有“complete”回拨
的文档答案 4 :(得分:0)
$.ajax({
type: "POST",
dataType : "json",
...
}).done(function(data) {
// Stuff you want to do after ajax complete
});
OR
$(document).ajaxComplete(function() {
// Ajax Completed
});