Javascript(jQuery)加载模态,直到数据库查询在php页面上结束

时间:2015-06-08 18:31:02

标签: javascript php jquery mysql laravel

我在页面上有很多mysql查询。在他们完成之前,我想在我的页面上显示()一个模态。莫代尔准备就绪。

我的算法:

page.onload -> show loading modal
/*wait until all the queries end*/
hide loading modal.

我怎么能等待所有查询结束?
提前致谢。

--- ---编辑

我正在使用laravel debugbar。 Debugbar向我显示如下:

enter image description here


--- Update--

Javascript文件:

$(document).ready(function(){
   $('#myTab a').on('load', function (e) {
        e.preventDefault();
        $(this).tab('show');
    },onLoadMyTab());
}

function onLoadMyTab(){
   //postRoute is on my routes.php and data is including the values
   $.post("postRoute", function(data)){
      //some javascript code, just for UI
   }
}

routes.php文件

Route::post('postRoute', array(
   'uses' => 'myController@myPostFunction'
   'as' => 'postRoute'
));


myController.php

public function myPostFunction(){
   //some database queries here, returning JSON to my onLoadMyTab js function
   //which returns as data to onLoadMyTab js function.
}

希望我能理解。

1 个答案:

答案 0 :(得分:1)

这里有几个问题:

  1. 您的DOM就绪处理程序中有错误。在$(...).on()内,第三个参数是每当发出事件时调用的回调。 http://api.jquery.com/on/
  2. 您实际上是将undefined传入回调,因为您调用了onLoadMyTab隐式返回未定义的内容。

    您可能只想在DOM准备就绪时立即调用onLoadMyTab

    $(document).ready(onLoadMyTab);
    
    1. $ .post将发出ajax请求,并在请求完成时调用第二个参数。

      function onLoadMyTab() {
          $.post("postRoute", function(data)){
              // show modal with data here
          });
      }