簡體   English   中英

使用AJAX逐步顯示數據庫中的大量數據-LARAVEL

[英]Displaying huge amount of data from database gradually using AJAX - LARAVEL

我正在使用laravel從數據庫中獲取大量數據(100mil ++數據),但這給了我一個錯誤,那就是超時,因為加載數據的時間太長了,我想使用AJAX逐步將數據附加到Laravel視圖中調用控制器,然后控制器使用LIMIT查詢來獲取數據,因此視圖將根據受限數據逐漸顯示數據,因此不會超時

控制器:

public function index(){
    return view('users.index',compact('users'));
}

public function loadAjax(){
    // print_r('expression');
    $counter = Input::get('counter');
    $users = User::take(1)->skip($counter)->get();
    return json_encode($users);
}

jQuery和AJAX:

<script>
  var ctr = 0;
  window.onload = function () {
    getData();
  };

  window.setInterval(function () {
    ctr++; //increase the data offset
    getData();
  }, 1000);

 function getData() {
        jQuery(document).ready(function() {
            jQuery.ajax({
                url: "users/ajax",
                type: 'GET',
                data: {counter : ctr},
                dataType: "json",
                success: function(data) {
                    console.log(data.users);
                    for(var i =0; i < data.users.length; i++) {
                        var htm = '';
                        htm += '<tr id="inside">'
                        htm +=  '<td>'+data.users[i].id+'</td>';
                        htm +=  '<td>'+data.users[i].name+'</td>';
                        htm +=  '<td>'+data.users[i].email+'</td>';
                        htm += '</tr>'
                        $("#inside").append(htm);
                    }
                },
                error: function(data) { 
                }
            });
        });
    }  
</script>

路線:

Route::get('users/ajax','UserController@loadAjax');

問題是,如果我的方法是正確的方法,我是ajax和idk的新手

您描述的分頁模式稱為“無限滾動”。 前x個記錄將加載到頁面上,隨后的AJAX調用請求更多數據並將其添加到視圖的列表中。 這是一個Laracast,其中包含有關實現無限滾動的更多信息。 當滾動到達底部時,將通過onScroll事件觸發無限滾動請求。 或者,可以使用按鈕觸發下一個請求。

請記住,由於客戶端內存的限制,您將無法在瀏覽器中顯示所有記錄。 通常,數百萬個對象在DOM中無法很好地工作。 因此,大數據集不能很好地適合無限滾動。 我強烈建議您使用普通的舊分頁。

jQuery Datatables是一個使用AJAX的現成的分頁工具包,可以很好地處理大型數據集。 祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM