发送 AJAX 请求时不显示引导模式

Posted

技术标签:

【中文标题】发送 AJAX 请求时不显示引导模式【英文标题】:Bootstrap Modal not showing when sending AJAX request 【发布时间】:2021-07-02 01:53:24 【问题描述】:

我在等待 AJAX POST 请求返回时尝试显示模式,但在发出 POST 请求后显示模式。模式应该显示在表单提交上,当我不发出 POST 请求但稍后显示 POST 请求时,这有效。

这是我的模态:

<div
      class="modal fade"
      id="loadingModal"
      tabindex="-1"
      aria-labelledby="loadingModalLabel"
      aria-hidden="true"
    >
      <div
        class="modal-dialog modal-dialog-centered"
        style="width: 300px; margin: auto"
      >
        <div class="modal-content">
          <div class="container text-center animationContainer">
            <h2>Drone Initialising</h2>
            <p>Please Wait</p>
            <div class="row">
              <div class="col-md-8 mx-auto">
                <lottie-player
                  src="https://assets10.lottiefiles.com/packages/lf20_2rqike9d.json"
                  background="transparent"
                  speed="1"
                  style="width: 250px; height: 250px"
                  loop
                  autoplay
                ></lottie-player>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>

这是用于激活模态的JS代码:

$('#destination_form').on("submit", function(e)   
   
    // $('#loadingModal').modal('show'); This works without the POST request
    
    var x = document.forms['destinationForm']['xCoord'].value;
    var y = document.forms['destinationForm']['yCoord'].value;
    var altitude = document.forms['destinationForm']['altitude'].value;
    var velocity = document.forms['destinationForm']['velocity'].value;

    requestUrl = Url + "sendFlightParams";

    console.log(JSON.stringify(
        "xCoord": x,
        "yCoord": y,
        "altitude": altitude,
        "velocity": velocity
    ));
    $.ajax
    (
        type: "POST",
        url: requestUrl,
        async: false,
        crossDomain: true,
        contentType: "application/json",
        data: JSON.stringify(
            "xCoord": x,
            "yCoord": y,
            "altitude": altitude,
            "velocity": velocity
        ),
        beforeSend: function()
            $('#loadingModal').modal('show'); // show modal here
        ,
        success: function () 
            window.location.href = "videostream.html";
        ,
        error: function(jqXHR, textStatus, errorThrown)  
            console.log(errorThrown)
        
    )

);

我不确定为什么在 POST 请求之后而不是之前显示模式。

【问题讨论】:

【参考方案1】:

我认为问题在于 $ajax 中的异步属性。

参考。 https://api.jquery.com/jquery.ajax/ 默认情况下,所有请求都是异步发送的。 请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。

尝试将其设置为 true 或将其删除。

async: true,

【讨论】:

以上是关于发送 AJAX 请求时不显示引导模式的主要内容,如果未能解决你的问题,请参考以下文章

更新引导缩略图网格 - ajax 请求

在引导模式 ONCLICK 事件中显示动态内容

使用 ajax 在引导模式上加载动态图像

如何将 Ajax 响应显示为模式弹出窗口

Twitter 引导模式背景不会消失

我的谷歌浏览器不显示选项请求[重复]