一尘不染

如何使用ajaxStart显示加载微调器?

ajax

我有一个网页,该网页使用命令shell_exec运行python脚本。我想要一个加载微调器,在Python脚本运行时显示“请稍等此页面加载”消息,然后在执行完之后显示其余的回显HTML。

我找到了看似不错的解决方案,但是我对ajax还是陌生的,所以我不知道如何使用该解决方案。我试着做

<div id="loadingDiv">Please wait while this page loads.</div>
<script>var $loading = $('#loadingDiv').hide();
$(document)
  .ajaxStart(function () {
    $loading.show();
  })
  .ajaxStop(function () {
    $loading.hide();
  });
</script>

但这没有用。我需要调用ajax来执行ajaxStart吗?我怎么称呼它?我应该用ajax代码包装shell_exec吗?

谢谢你


阅读 149

收藏
2020-07-26

共1个答案

一尘不染

每当即将发送Ajax请求时,jQuery都会检查是否还有其他未完成的Ajax请求。如果没有正在进行中,则jQuery触发ajaxStart事件。

具有如下所示的加载gif图像

           <div id="loading">
                <img src="loading.gif" />  
           </div>

首先隐藏此加载div(因为要发送ajax请求时必须显示加载图像)。

              <script>
                   var $loading = $('#loading').hide();
                   //Attach the event handler to any element
                   $(document)
                     .ajaxStart(function () {
                        //ajax request went so show the loading image
                         $loading.show();
                     })
                   .ajaxStop(function () {
                       //got response so hide the loading image
                        $loading.hide();
                    });
              </script>

有关更多信息,请参见jQuery文档。

我需要调用ajax来执行ajaxStart吗? 我怎么称呼它?

是的,当您触发ajax请求时,只有ajaxStart会被自动触发。

对于ajax,jquery有多种方法,下面我给出了load函数。

               $( ".result" ).load( "some_file.py" );

some_file.py输出将以类名result插入到div中。

要触发加载事件,您可以根据需要使用按钮单击或任何其他操作。

               $( ".trigger" ).click(function() {
                  $( ".result" ).load( "some_file.py" );
               });
2020-07-26