我有
// Ajax setup
$.ajaxSetup({
beforeSend: function() {
$('#general-ajax-load ').fadeIn();
},
complete: function() {
$('#general-ajax-load ').fadeOut();
}
});
在页面加载时为我的所有ajax调用设置加载动画。除了load()调用之外,它工作正常。对于只有onSend被触发的加载,并且完成永远不会被调用,这会导致显示永不消失的动画。
有什么想法吗?
答案 0 :(得分:5)
根据http://bugs.jquery.com/ticket/4086#comment:4,“正确”的方式是:
$(document).ajaxSend(function(event, jqXHR, settings) {
$('#general-ajax-load ').fadeIn();
});
$(document).ajaxComplete(function(event, jqXHR, settings) {
$('#general-ajax-load ').fadeOut();
});
我刚做了一些测试,确实似乎适用于所有情况(包括$.load
)。
答案 1 :(得分:2)
添加成功解决了问题,谢谢(我可以发誓我以前试过了)
$.ajaxSetup({
beforeSend: function() {
$('#general-ajax-load ').fadeIn();
},
complete: function() {
$('#general-ajax-load ').fadeOut();
}
success: function() {
$('#general-ajax-load ').fadeOut();
}
});
:)
答案 2 :(得分:1)
$.load
手册说:
......大致相当于 $ .get(url,数据,成功)除外 它是一种方法而不是全局函数,它有一个隐含的 回调函数。
似乎$.load
的隐式回调函数覆盖了complete
中的$.ajaxSetup
回调。 $.ajaxSetup
文档说:
所有后续的Ajax调用都使用any 功能将使用新设置, 除非被个人覆盖 调用,直到下一次调用 $ .ajaxSetup()。