【问题标题】:how to execute Javascript before ajax code如何在ajax代码之前执行Javascript
【发布时间】:2019-03-26 19:15:31
【问题描述】:

我知道有一些与此相关的问题,但没有一个有帮助,情况就是这样:我有一个模态并且继续我想显示一个我已经拥有并且工作正常的加载 gif。

问题是我的 ajax 代码首先执行,所以加载的 gif 在最后显示一个 milisec 并关闭。

<!-- Modal -->
<div class="modal fade" id="modalChangeStatusGeneral" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div id="myLoader" class="loader"></div>
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="mdlStatusRobot">¡CARE!</h5>
            </div>
            <div class="modal-body">
                Doing smth?
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal" >Cancel</button>
                <button type="button" class="btn btn-primary" onclick="changeGeneralStatus()" data-dismiss="modal" id="btnContinuar">Continue</button>
            </div>
        </div>
    </div>
</div>

脚本:

function changeGeneralStatus() {
    $("#myLoader").show();

    $.ajax({
        type: "POST",
        url: '/changeStatus/',
        data:"",
        async: false,
        success: function (result) {
            refresh();
        }
    });
}

【问题讨论】:

  • 提示:async: false
  • @Zak 为什么这是重复的?
  • 这意味着它工作正常,它会加载直到数据返回然后你点击刷新..还有为什么这是 async: false?
  • 我有... async: false 阻止浏览器重新绘制窗口 = 没有加载器。当响应到达时,GUI 的阻塞停止,您会在短时间内看到加载程序,直到 refresh() 启动...

标签: javascript ajax twitter-bootstrap


【解决方案1】:

这里有几件事:

  1. ajax 不会首先运行,如果您会看到微调器永远不会消失,因为显示代码会在 ajax 之后触发。您看到的是正确的,您的微调器已显示,但 ajax 调用的响应非常快,几乎立即消失。
  2. 如果这不是您想要的,并且您想稍微展示一下微调器,您可以将您的 ajax 调用放在 setTimeout() 中,但我认为这不是必需的。

【讨论】:

  • 在我的后端它等待大约 5/10 秒,即使在调试时,它也会到达后端并且它没有旋转......
  • 摆脱这个:async: false,
  • 我做到了,但我的模式立即关闭并且加载解除
猜你喜欢
  • 2015-06-02
  • 2022-11-18
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多