2017-04-07 167 views
0

我使用帶有Dataview的Slickgrid編輯多達5000行的表,使用Laravel從MySQL數據庫獲取數據。我已經創建了一個AJAX保存功能,所有的數據保存到數據庫,但它運行得非常慢,並凍結了幾秒鐘電網:與數據庫同步數據視圖

function TestSave() { 

    var request; 
    var token = $('meta[name="csrf-token"]').attr('content'); 

    request = $.ajax({ 
     url: "/est/public/estimate/{{ $id }}", 
     type: "PATCH", 
     dataType: "json", 
     params: {_token:token}, 
     async: true, 
     data: { data: JSON.stringify(dataView.getItems()), _token:token 
     } 
    }); 

} 

是否有保存數據,沒有它凍結的一種方式?我想過使用grid.onClick或onBeforeEditCell,並在更改時單獨保存每行,但插入行等函數會在插入下面的每一行更改「訂單」值。

保持Dataview和數據庫同步的最佳方法是什麼?

回答

0

這是一個複雜的問題。
首先,ajax調用應該是異步的,所以它不應該阻塞5秒。
但是,如果您將所有5000行傳遞給服務器,那麼JSON編碼可能需要一段時間。您最好只將更改的行傳遞給服務器。 然而,它本身看起來更復雜。

您可能最好使用現有的框架來爲您處理數據。 Breeze是一個不錯的選擇。