我的请求 ajax 不调用函数来显示加载的 gif,我使用示例 ajax 申请,我的 js 是:
$("#carregar").bind("ajax:loading", function(et, e){
$(this).hide();
$("#load_img").show();
});
我正在使用 controller.js.erb 的示例方法并加载内容,但没有出现 gif,请问这是怎么回事?谢谢
我的请求 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(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
.