我对 Ajax/Json 有点陌生,所以我想知道以下是否至少接近最佳实践。目标是每 x 秒更新一次表的特定列(在本例中为数量和价格)。
我有一个这样定义的 HTML 表:
<table id="#edition_table>
<tbody>
<tr>
<td class="name"><a href="?card=12345">Lightning Bolt</a></td>
[...]
<td class="qty">2</td>
<td class="price">$4.99</td>
<tr>
<tr>
<td class="name"><a href="?card=23456">Fireball</a></td>
[...]
<td class="qty">0</td>
<td class="price">$0.07</td>
<tr>
[...]
</tbody>
</table>
和一个这样定义的 JS 函数:
function edition_update(edition)
{
var table_rows = $('#edition_table').find('tbody tr td.name a');
$.ajax({
type: 'GET', url: 'ajax_edition_update.php', data: { edition : edition }, dataType: 'json',
success: function(json_rows)
{
var new_qty, new_price;
table_rows.each(function(index) {
var td_id = $(this).attr('href').replace('?card=', '');
for (i in json_rows) {
if (json_rows[i].card_id == td_id)
{
new_qty = json_rows[i].qty;
new_price = json_rows[i].low_price;
break;
}
}
var parent_tr = $(this).parent().parent();
parent_tr.find('td.qty').text(new_qty);
parent_tr.find('td.price').text(!isNaN(new_price) ? '$' + new_price : new_price);
});
}
});
setTimeout(edition_update, 30000, edition);
}
PHP 文件返回一个 JSON,包括 card_id、qty 和 low_price。
这确实工作正常。我想我可以在 class=name td 上设置一个data-id=[card_id]
来摆脱 .replace,但这有点炸毁 html 足迹,因为 id 已经存在。
真正的问题是任何性能改进(尤其是关于两个循环)是否可能或必要?当然,每个表的目标行数约为 500,内容和顺序是完全动态/不可预测的。