我在Kendo UI中有一个奇怪的问题 – 我不明白. 这是我的代码. $(document).ready(function() { var kendo_dataSource = new kendo.data.DataSource({ autoSync: true, batch: true, transport: { read: { url: "?php echo BASE_URL . '
这是我的代码.
$(document).ready(function() { var kendo_dataSource = new kendo.data.DataSource({ autoSync: true, batch: true, transport: { read: { url: "<?php echo BASE_URL . 'kendo/kendo_grid_read' ?>", dataType: "json" }, destroy: { url: "<?php echo BASE_URL . 'kendo/kendo_grid_destroy' ?>", dataType: "json", type: "POST" }, parameterMap: function(data, type) { if (type == "destroy") { return {models: data.models} } } }, serverFiltering: true, serverGrouping: true, serverPaging: true, page: 1, pageSize: 5, schema: { data: "results", total: "total", model: { id: "field1" } } }); $("#kendo_grid2").kendoGrid({ dataSource: kendo_dataSource, height: 300, filterable: true, sortable: true, pageable: true, selectable: "multiple row", columns: [ { field: "field1" }, { field: "field2" }, { field: "field3" } ] }); $("#test_button").on("click", function() { var selectedRows = $("#kendo_grid2").data("kendoGrid").select(); if (selectedRows.length > 0) { for (var i = 0; i < selectedRows.length; i++) { var dataItem = $("#kendo_grid2").data("kendoGrid").dataItem(selectedRows[i]); console.log(dataItem); kendo_dataSource.remove(dataItem); } } }); });
这就是情况.
当$(“#test_button”).on(“click”,function()被触发时,它会检查网格中的选定行 – 并删除行.
如果我选择2行,则删除2行.并且两行从Grid中消失了.
但是,我看到一些奇怪的东西 –
当删除2行时,有2个POST请求 – 这很好.
但第一个POST请求的参数是
models[0][field1] 3 models[0][field2] poioioi models[0][field3] oiuoiuuigbhkjh models[0][field4] kjh kjhkjhyt
第二个POST请求的参数是
models[0][field1] 3 models[0][field2] poioioi models[0][field3] oiuoiuuigbhkjh models[0][field4] kjh kjhkjhyt models[1][field1] 4 models[1][field2] kjhk hkiui models[1][field3] khkj models[1][field4] mkhkhkhkjhghgfgdf
我理解,我可以像这样访问服务器中的数据
foreach ($_POST['models'] as $model) { echo $model['field1']; }
我想知道是否可能只发送一个请求 – 可能只是第二个POST请求,因为我可以删除一个请求中的2行.
或者发送2个单独的请求,但一次只有一个模型?
可能吗?
任何帮助将不胜感激.
这是由autoSync设置引起的.将其设置为true时,数据源会在每次更改后调用sync方法.将autoSync设置为false并手动调用sync()方法将导致数据源仅对一个请求包含所有已删除的数据项.