使用Tabulator获取筛选后选中行到数组无数据,求技术支援
问题排查与修复方案
代码中的核心问题:
filter回调无返回值:filter方法需要回调返回布尔值来筛选数组,但你的回调仅执行判断和AJAX操作,未返回值,导致selectedRows始终为空。- 数据范围错误:
jQuery.map遍历的是所有活跃行(rows),而非筛选出的选中行,会导致提交所有筛选后的数据,而非仅选中的行。 - 逻辑位置错误:AJAX请求被放在
filter的迭代回调中,会导致每选中一行就发送一次请求,而非收集完选中行后统一提交。 - 字段拼写错误:原代码中
FirtName少写了一个s,应为FirstName,会导致无法正确获取对应字段值。
修复后的代码:
document.getElementById("get-selected-rows").addEventListener("click", function() { // 获取筛选后的所有活跃行 var activeRows = table.getRows("active"); // 筛选出其中被选中的行 var selectedRows = activeRows.filter(row => row.isSelected()); // 将选中行转换为提交格式 var postData = jQuery.map(selectedRows, function(row) { return { id: row.getData().id, FirstName: row.getData().FirstName, LastName: row.getData().LastName, Age: row.getData().Age, City: row.getData().City }; }); // 仅当有选中行时发送请求 if (postData.length > 0) { jQuery.ajax({ url: 'save_rows.php', type: 'POST', data: JSON.stringify(postData), contentType: 'application/json', success: function(response) {}, error: function(error) {} }); } });
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

