【问题标题】:jQuery - Dynamically add table cells with value from AJAX calljQuery - 使用来自 AJAX 调用的值动态添加表格单元格
【发布时间】:2015-04-07 00:15:32
【问题描述】:

使用 jQuery,当表格单元格本身以编程方式生成时,如何使用 AJAX 调用填充表格单元格的值?

我正在构建一个如下工作的页面:

  1. 执行初始 AJAX 调用,需要一个 JSON 数组,例如项目名称列表
  2. AJAX 回调使用jQuery.each 遍历数组
  3. 每个数组项的回调会在表中添加一行,并带有项名称
  4. 还有其他单元格(假设它们代表项目位置),但要获得此值,需要进行另一个 AJAX 调用(在示例中标记为 *) - 我该如何实现此功能?

示例表结构:

Name       Location1  Location2
================================
Item1          *          *
Item2          *          *

其他注意事项:

  • 需要满足动态数量的列,即位置。这就是为什么我
  • 我知道有大量的电话,但不关心这个问题
  • 我正在使用DataTables 插件
  • 我想了解这是否真的可以在不更改 Web 服务后端以生成整个表或至少一次生成一行的情况下完成。通过对每个单元格执行查询,我可以重用现有调用。

注意:我正在使用以下代码添加表格行,我愿意对其进行更改。 Reference

$("#tableID").find("tbody").append($('<tr>')
    .append($('<td>').text(...))
    .append($('<td>').text(...))
    .append($('<td>').text(...))
);

我想我可能会为每个单元格生成 ID,然后基于此触发 AJAX 调用,但这似乎有点笨拙。有没有更优雅的方法来做到这一点?

理想情况下,任何解决方案都可以进行调整以处理向表中添加额外列的用例,例如上面示例表中的位置 3。

【问题讨论】:

  • @RawN 更新了问题 - 我如何能够实施第 4 步?其余的主要是为了上下文
  • 如果您使用的是 dataTables 插件,您没有附加自己的 html,插件将无法识别它的存在。使用 API 添加数据
  • @charlietfl 要点——我还没有进行数据表集成,典型的方法是生成一个完整的行,然后将其传递给 API。在这个问题中,我正在寻找有关如何管理所有每个单元格回调的想法
  • 为什么不能在第二个请求的回调中将数据添加到插件api?

标签: javascript jquery ajax


【解决方案1】:
var nEditing = null;
 $('#query_for_search_result_table_new').click(function (e) {
            e.preventDefault();
            var aiNew = oTable.fnAddData(['', '', '', '<a class="edit" href="">Edit</a>', '<a class="cancel" data-mode="new" href="">Cancel</a>', '']);
            var nRow = oTable.fnGetNodes(aiNew[0]);
            editRow(oTable, nRow);
            nEditing = nRow;
        });

function editRow(oTable, nRow) {

            var aData = oTable.fnGetData(nRow);
            var jqTds = $('>td', nRow);
            jqTds[0].innerHTML = $("#dvFieldLabel").html();
            jqTds[1].innerHTML = $("#dvFieldOperator").html();
            jqTds[2].innerHTML = '<input type="text" class="m-wrap small" value="' + aData[2] + '">';
            jqTds[3].innerHTML = '<a class="edit" href="">Save</a> &nbsp; <a data-mode="new" class="cancel" href="">Cancel</a>';
            jqTds[4].innerHTML = '<label>' + aData[0] + ' ' + aData[1] + ' ' + aData[2] + '</label>';



        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    相关资源
    最近更新 更多