2016-08-15 29 views
0

我使用laravel從數據庫(100mil ++數據)中獲取大量的數據,但它給我錯誤是超時,因爲加載數據太長,我想通過調用控制器來逐漸使用AJAX在Laravel視圖中追加數據,然後控制器使用含有LIMIT的查詢獲取數據,因此視圖將根據有限的數據逐步顯示數據,因此它不會超時顯示大量的數據從數據庫逐漸使用AJAX - LARAVEL

控制器:

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','[email protected]'); 

問題是我是新使用Ajax和IDK的,如果我的方法是您所描述的分頁模式被稱爲無限滾動的正確方法

+0

您沒有使用任何索引? – Daan

+0

請分享ajax請求代碼和發送ajax請求的控制器。 –

+0

我認爲你可以使用分頁來達到這個目的。這裏的示例代碼https://gist.github.com/tobysteward/6163902 – jaysingkar

回答

1

。前x個記錄將加載到頁面上,隨後的AJAX調用請求更多數據並將其添加到視圖中的列表中。這裏是一個Laracast與實施無限滾動更多的信息。當滾動達到底部時,onScroll事件觸發無限滾動請求。或者,可以使用按鈕來觸發下一個請求。

請記住,由於客戶端內存限制,您將無法顯示瀏覽器中的所有記錄。一般來說,數以百萬計的對象在DOM中效果不佳。因此,大數據集不適合無限滾動。我強烈建議簡單的舊分頁。

帶有AJAX的開箱即用分頁工具包可以很好地處理大型數據集jQuery Datatables。祝你好運。

+0

我編輯了我的問題你可以看看嗎? –

+0

您的方法存在的問題是,您正在使用新的數據查詢每1秒(1,000毫秒)對數據庫執行ping操作,然後用所有記錄填充DOM。它不會以這種方式工作。您需要使用Laravel和jQueryDatatables來確保您對記錄集進行分頁,而不僅僅是加載您要爲該頁面查看的記錄。請按照本教程/示例查看快速示例:http://laraveldaily.com/laravel-datatables-enchant-tables-ease/ –

相關問題