我正在尝试使用jquery完成ajax调用后执行一些操作。
我已经看过如果我使用这样的函数:
function DownloadData() {
$.ajax({
url: "/api/AlbumsRest",
accepts: "application/json",
cache: false,
success: function () {
/*binding stuff*/
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('Error' + textStatus);
}
});
}
ajax请求它以异步模式完成。我不想改变它,因为我不想冻结页面。但是我想在这个ajax完成之后做一些动作(动画,效果等)。
所以,我的问题是,如何在不使用成功事件的情况下知道我是否在此请求的最后
如果我这样调用DownloadData函数:
function DownloadNextData() {
DownloadData();
SlideOutAnimation();
SlideInAnimation();
}
我需要在发出异步请求后制作幻灯片。
有些想法?
答案 0 :(得分:4)
使用jQuery Deferred Objects,return
$.ajax()
DownloadData
的结果function DownloadData() {
return $.ajax({...});
}
function DownloadNextData() {
DownloadData().done(function() {
SlideOutAnimation();
SlideInAnimation();
});
}
然后你可以在AJAX处理程序之外注册一个函数,只有在AJAX调用完成后才会被调用:
.done
看哪 - 你的动画处理与你的AJAX功能完全分离:)
为简化起见,function DownloadNextData() {
DownloadData().done(SlideOutAnimation, SlideInAnimation);
}
实际上也可以列出函数引用:
{{1}}
请注意,在这种情况下,您无法提供自己的函数参数 - 它们实际上会传递AJAX数据的内容。
答案 1 :(得分:2)
function DownloadData() {
return $.ajax({
url: "/api/AlbumsRest",
accepts: "application/json"
});
}
function DownloadNextData() {
SlideOutAnimation();
SlideInAnimation();
}
DownloadData().done(DownloadNextData);
答案 2 :(得分:-1)
尝试$ .ajaxcomplete。这是它的文档http://api.jquery.com/ajaxComplete/