html - 如何迭代 JSON 数据并将结果插入相应的 HTML 表格行?
问题描述
我想将 JSON 数据放入现有的 HTML 表格行模板中,这些模板是动态创建的。
我得到了正确的 JSON 数据,但是当我试图将它放入 HTML 表时,只更新了一行。
这是 HTML 表格:
<table class="table">
<thead>
<tr>
<th>First name</th>
<th>Last name</th>
<th>E-mail address</th>
<th>Phone number</th>
<th></th>
</tr>
</thead>
<tbody>
<?php foreach($users['results'] as $u) { ?>
<tr>
<td class="align-middle" id="first_name"><?= $u->first_name; ?></td>
<td class="align-middle" id="last_name"><?= $u->last_name; ?></td>
<td class="align-middle" id="email"><?= $u->email; ?></td>
<td class="align-middle" id="phone"><?= $u->phone; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
表行是根据 SQL 查询动态生成的。
这是我的 JSON 数据:
{"results":[
{
"first_name":"Some name",
"last_name":"Some name",
"email":"email_address",
"phone":"666633337"
},
{
"first_name":"Some other name",
"last_name":"Some other last name",
"email":"email_address",
"phone":"234234324"
}
]
}
这是我用 AJAX 尝试过的:
$.ajax({
url : "filter_participants",
method : "post",
data: { view },
dataType: "json",
success: function(data) {
$.each(data.results, function(index) {
$('#first_name').html(data.results[index].first_name);
$('#last_name').html(data.results[index].last_name);
$('#email').html(data.results[index].email);
$('#phone').html(data.results[index].phone);
});
}
});
当我调用 AJAX 请求时,我想从表行中删除现有数据并从 JSON 结果中放入新数据。应根据 JSON 数据动态创建行,并且 AJAX 请求应能够更新相应数量的已创建行。
例如:
如果 JSON 数据中有 2 行,AJAX 应删除所有现有行并将 JSON 数据放入 2 个新行。
解决方案
好的,我已经设法解决了我的问题。这是答案:
1. 首先,我需要编辑 HTML 表格,从 td 标签中删除 id 并为 tr 标签添加一个自定义类:
<?php foreach($users['results'] as $u) { ?>
<tr class="ajax-data">
<td class="align-middle"><?= $u->first_name; ?></td>
<td class="align-middle"><?= $u->last_name; ?></td>
<td class="align-middle"><?= $u->email; ?></td>
<td class="align-middle"><?= $u->phone; ?></td>
</tr>
<?php } ?>
2. 创建一个适当的 AJAX 操作,它将删除所有表行并使用来自服务器的 JSON 格式的数据创建一个新行:
$.ajax({
url : "filter_participants",
method : "post",
data: { view },
dataType: "json",
success: function(data) {
var tr = '';
$('tr.ajax-data').remove();
$.each(data.results, function(index) {
tr += '<tr class="ajax-data">';
tr += '<td class="align-middle">' + data.results[index].first_name + '</td>';
tr += '<td class="align-middle">' + data.results[index].last_name + '</td>';
tr += '<td class="align-middle">' + data.results[index].email + '</td>';
tr += '<td class="align-middle">' + data.results[index].phone + '</td>';
tr += '</tr>'
});
$('tbody').append(tr);
}
});
就这样。随意,如果你有一些建议。
推荐阅读
- ios - 必须升级到 graph api > v2.8 吗?
- python - 计算 numpy 数组平均值的最佳方法,不包括不可计算的元素
- python - 如何使用python将视频写入json文件
- java - 在 JavaFX 中打印 TableView 显示垃圾/其他语言字符
- scala - 无法制作简单的无标签最终示例
- python - 插入给出操作数应包含 1 列错误
- mysql - Mysql ALTER DATABASE 在外部 NTFS 驱动器上出现 Errcode 5 失败
- django - JSON 根目录中的自定义字段导致 Django Rest Framework ListApiView
- prometheus - 什么是平均不在这里做
- mysql - EMPTY TABLE 键 'PRIMARY' 的重复条目 '1'