如何在Ajax代码之前执行Javascript

时间:2018-10-22 16:38:09

标签: javascript ajax twitter-bootstrap

我知道有一些与此相关的问题,但没有一个得到解决,这是这种情况:我有一个模态,然后继续,我要显示一个已经存在并且可以正常工作的加载gif。

问题是我的ajax代码首先执行,因此加载的gif在末尾显示出毫秒,然后关闭。

<!-- 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();
        }
    });
}

1 个答案:

答案 0 :(得分:0)

在这里耦合事物:

  1. 如果ajax没有运行,则您将看到微调框永远不会消失,因为显示代码将在ajax之后触发。您所看到的是正确的,显示了微调器,但对ajax调用的响应是如此之快,几乎立即消失了。
  2. 如果这不是您想要的,并且想要显示微调框,您可以将ajax调用放在setTimeout()中,但是我认为不需要。