Ajax-loader.gif 在页面加载后结束


Ajax-loader.gif ends once page loads

我已经为这个问题苦苦挣扎了一段时间了。 我安装了OpenCart 1.5.2.1,在结帐阶段,我有几个步骤必须在后台完成。 当这种情况发生时,我正在尝试显示一个简单的 ajax-loader.gif,我希望它在页面完成处理后消失。 目前,ajax加载器.gif没有显示...

这是我的javascript:

  var el = $("#confirm .checkout-heading").addClass("loading");
  $.ajax({
      url: 'checkout/checkout.php',
      success: function(data) {},
      failure: function() {},
      complete: function() {
          el.removeClass("loading");
      }
  });

样式表:

#confirm .checkout-heading {
    background: #fff;
}
#confirm .checkout-heading.loading {
    background-image: url('../image/ajax-loader.gif');
    background-position: 98% 50%;
    background-repeat: no-repeat;
}

页:

  <div class="breadcrumb">
    <?php foreach ($breadcrumbs as $breadcrumb) { ?>
    <?php echo $breadcrumb['separator']; ?><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
    <?php } ?>
  </div>
  <h1><?php echo $heading_title; ?></h1>
  <div class="checkout">
    <div id="checkout">
      <div class="checkout-heading"><?php echo $text_checkout_option; ?></div>
      <div class="checkout-content"></div>
    </div>
    <?php if (!$logged) { ?>
    <div id="payment-address">
      <div class="checkout-heading"><span><?php echo $text_checkout_account; ?></span></div>
      <div class="checkout-content"></div>
    </div>
    <?php } else { ?>
    <div id="payment-address">
      <div class="checkout-heading"><span><?php echo $text_checkout_payment_address; ?></span></div>
      <div class="checkout-content"></div>
    </div>
    <?php } ?>
    <?php if ($shipping_required) { ?>
    <div id="shipping-address">
      <div class="checkout-heading"><?php echo $text_checkout_shipping_address; ?></div>
      <div class="checkout-content"></div>
    </div>
    <div id="shipping-method">
      <div class="checkout-heading"><?php echo $text_checkout_shipping_method; ?></div>
      <div class="checkout-content"></div>
    </div>
    <?php } ?>
    <div id="payment-method">
      <div class="checkout-heading"><?php echo $text_checkout_payment_method; ?></div>
      <div class="checkout-content"></div>
    </div>
    <div id="confirm">
      <div class="checkout-heading">Confirm Purchase</div>
      <div class="checkout-content"></div>
    </div>
  </div>

任何帮助,不胜感激。 提前谢谢。

有三个可能的原因:

  1. 您正在尝试在 DOM 准备就绪之前获取元素(使用 $(document).ready));

  2. Ajax 执行速度太快,因此您无法观察加载程序。

  3. 你在使用css/image时遇到了麻烦。要测试它,请摆脱javascript并查看它是否适用于静态内容(手动添加类"加载")。

在下面的示例中,我将 ajax 的执行推迟了 2 秒:

http://jsfiddle.net/webdevel/Dd3B7/1/