【问题标题】:Show loading image while ajax being executed在执行 ajax 时显示加载图像
【发布时间】:2016-08-23 23:36:09
【问题描述】:

我正在尝试将 ajax 加载图像添加到 div 容器,同时执行 ajax 请求。

我的 Jquery 代码如下所示:

<script type="text/javascript">
    $(document).ready(function(){
        $("#store, #gender, #username").change(function () {
            var store = $("#store").val();
            var gender = $("#gender").val();
            var receiver = $("#username").val();

            $.ajax({
                type: "POST",
                data: {
                    "store" : store,
                    "gender" : gender,
                    "receiver" : receiver
                },
                url: "handling/ajax/store_items_ajax.php",
                success: function(data){
                    $("#result").html(data);
                }
            });
        });
    });
</script>

如何将加载图像添加到以下 html div:

<div id="result" class="col-md-12"></div>

有人知道吗?

【问题讨论】:

标签: jquery ajax


【解决方案1】:

逻辑

- Create progress div element
<div id="progress">
    <img style="width:100%" src="/images/spinner.gif"/>
</div>

- By default hide this progress div
- Show when passing ajax request
- Hide when you get ajax response

脚本

<script type="text/javascript">

    $(document).ready(function() {

      $("#store, #gender, #username").change(function () {
        var store = $("#store").val();
        var gender = $("#gender").val();
        var receiver = $("#username").val();

        $('#progress').show(); //show progress bar

        $.ajax({
            type: "POST",
            data: {
              "store" : store,
              "gender" : gender,
              "receiver" : receiver
            },
            url: "handling/ajax/store_items_ajax.php",
            success: function(data){
              $('#progress').hide(); //hide progress bar
              $("#result").html(data);
            }
        });
      });

    });

</script>

【讨论】:

  • 我会隐藏完整事件上的 div 而不是成功。
  • 无论您需要哪种方式,但这是强大的,我已经在实时站点中实现了它并且就像一个魅力!请理解,如果你把它放在外面,那么 DOM 将直接执行而不等待它,所以在 AJAX 请求/响应方面可能会更好。无论如何,你可以玩它,因为你现在有一个解决方案。
  • 您还可以设置一个全局 .ajaxStart() 并在每个调用中保存一些额外的行。 api.jquery.com/ajaxStart
猜你喜欢
  • 2011-06-08
  • 2013-09-26
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多