我的请求ajax不调用函数来显示加载的gif,我使用一个示例ajax请求,我的js是:
$("#carregar").bind("ajax:loading", function(et, e){
$(this).hide();
$("#load_img").show();
});
我使用controller.js.erb的示例方法并加载内容,但GIF不出现,请有什么问题?由于
ajax:loading
是由旧版本的jquery-rails附带的JS驱动程序触发的事件。它后来被修改了。如果你使用的是最新版本的Rails,那么你应该绑定到ajax:beforeSend
事件。
其他需要考虑的事项:
1) ajax:beforeSend
事件的处理程序应该绑定到触发AJAX请求的元素,最有可能是一个FORM元素。
2)当使用jQuery .bind()时,目标元素需要出现在DOM中。确保在绑定事件处理程序之前加载DOM的简单方法是将脚本封装在document ready callback中。
$(document).ready(function(){
$("#carregar").bind(...)
})
3) Arun关于使用ajaxStart的建议将很好地显示和隐藏ajax加载指示器。
// Show and hide the indicator for every AJAX request.
$(document).ajaxStart(function(){
$("#load_img").show();
});
$(document).ajaxStop(function(){
$("#load_img").hide();
});
请参考jQuery文档了解触发的事件。
尝试绑定ajax:before
事件而不是ajax:loading
。