2017-04-07 164 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是一个不错的选择。