Jquery Rails-在AJAX请求进行时显示加载程序

Jquery Rails-在AJAX请求进行时显示加载程序,jquery,css,ajax,ruby-on-rails-3,settimeout,Jquery,Css,Ajax,Ruby On Rails 3,Settimeout,我有一个表单,当这个表单通过AJAX发送时,我会显示AJAX加载程序图像,然后在请求完成时显示,所以在2秒钟内我想隐藏这个加载程序。不幸的是,在实践中,ajax加载程序总是只在0.5s上显示(只是我的估计)。 奇怪的是,CSS类透明在2秒内隐藏,但图像加载程序却没有 我有重要的事吗?为什么图像加载器不是在2秒内隐藏,而是在0.5秒内隐藏 更新页面.html.haml %h1 Update = render :partial => 'update_it' %section#update

我有一个表单,当这个表单通过AJAX发送时,我会显示AJAX加载程序图像,然后在请求完成时显示,所以在2秒钟内我想隐藏这个加载程序。不幸的是,在实践中,ajax加载程序总是只在0.5s上显示(只是我的估计)。 奇怪的是,CSS类
透明
在2秒内隐藏,但图像加载程序却没有

我有重要的事吗?为什么图像加载器不是在2秒内隐藏,而是在0.5秒内隐藏

更新页面.html.haml

  %h1 Update
= render :partial => 'update_it'
%section#update_it
  = form_for(@user, :remote => true, :html => {:class => 'form-horizontal'}) do |f|
    ...
    = submit_tag 'Save changes', :id => 'update_information'
$('#update_it').html("#{escape_javascript(render(:partial => 'update_it'))}");
setTimeout(function() {
  $('section#update_it').removeClass('transparent')
} , 2000);
\u update\u it.html.haml

  %h1 Update
= render :partial => 'update_it'
%section#update_it
  = form_for(@user, :remote => true, :html => {:class => 'form-horizontal'}) do |f|
    ...
    = submit_tag 'Save changes', :id => 'update_information'
$('#update_it').html("#{escape_javascript(render(:partial => 'update_it'))}");
setTimeout(function() {
  $('section#update_it').removeClass('transparent')
} , 2000);
update.js.haml

  %h1 Update
= render :partial => 'update_it'
%section#update_it
  = form_for(@user, :remote => true, :html => {:class => 'form-horizontal'}) do |f|
    ...
    = submit_tag 'Save changes', :id => 'update_information'
$('#update_it').html("#{escape_javascript(render(:partial => 'update_it'))}");
setTimeout(function() {
  $('section#update_it').removeClass('transparent')
} , 2000);
script.js

$(document).ready(function(){
  $("#update_information").click(function(){
    $('section#update_it').addClass('transparent');
    $('.transparent').append('<img src="/assets/ajax-loader.gif" alt="" id="loader" class="loader" />');
  });
});
$(文档).ready(函数(){
$(“#更新#u信息”)。单击(函数(){
$('section#update_it').addClass('transparent');
$('.transparent')。追加('');
});
});

编辑我忘记了一件事-当我第一次单击提交按钮时,它被使用CSS类
透明
,但当我第二次单击按钮时,它已经不可用了。为什么?有什么问题吗?

对不起,我直截了当,但我认为你把简单的事情弄得复杂了

尝试使用jQuery的ajax回调函数(如ajaxStart())重新实现“ajax加载器”。(见:)


ajax完成后,使用另一个回调函数(如“success”或“complete”)替换ajax加载程序。(见)

对不起,我直截了当,但我认为你把简单的事情复杂化了

尝试使用jQuery的ajax回调函数(如ajaxStart())重新实现“ajax加载器”。(见:)

ajax完成后,使用另一个回调函数(如“success”或“complete”)替换ajax加载程序。(见附件)