我有一个AJAX请求,它从我的数据库中返回一个数组,如下所示:
$objet['name']
$objet['date']
$objet['amount']
当我执行each
函数时,它会为每个行和键执行迭代,
我想为每一行进行一次迭代并在表格行中显示数据。以下是我的代码:
$("#show_debours").dialog("open");
var groupe_debours = $(this).closest('tr').find('.groupe').val();
$.ajax({
type: "POST",
url: "requetes_ajax/fetch_debours_detail.json.php",
data: "groupe=" + groupe_debours,
success: function(data){
$('.remove').remove();
$.each(data, function (data) {
$('#fetchdebours tr:last').after('<tr class="remove"><td>' + data.libelle_debours + '</td><td>' + data.date + '</td><td>' + data.debours_montant_ht_tva + '</td><td>' + data.debours_montant_ht_no_tva + '</td><td>' + data.debours_montant_ttc + '</td></tr>')
//alert(key + ': ' + value);
});
}
});
});
一切正常,但不是返回一行包含所有值,而是返回与行和变量一样多的行
例如,如果我的数据库中有3行,则会在表格中返回9行。它不应该。
在php中我做
<?php
foreach($data as $row):
echo "<tr><td>{$data['name']}</td><td>{$data['date']}</td>{$data['amount']}</tr>";
endforeach;
?>
这很好,它返回给我3行,所有值都填充。我想在jQuery中也一样,但我不知道如何。我做了一些研究没有成功。
非常感谢任何形式的帮助
答案 0 :(得分:1)
它会创建多行,因为您在每次迭代中都创建了一个tr
元素。试试这个:
success: function(data){
$('.remove').remove();
var $tr = $('<tr />', { 'class': 'remove' });
$.each(data, function (data) {
$tr.append('<td>' + data.libelle_debours + '</td><td>' + data.date + '</td><td>' + data.debours_montant_ht_tva + '</td><td>' + data.debours_montant_ht_no_tva + '</td><td>' + data.debours_montant_ttc + '</td>');
});
$('#fetchdebours tr:last').after($tr);
}