Используя следующее в качестве тестового кода, я нахожу две вещи:
a.Вы выбираете как индексированные, так и ассоциативные массивы из базы данных.Запишите в JSON нумерованный индекс и значение, затем ассоциативное имя (имя столбца) и значение:
"0":"Hannibal","firstname":"Hannibal"
Вы должны получать только то, что хотите.Например, я бы использовал mysqli_fetch_assoc()
здесь - давая мне имена и значения столбцов.
b.Вы перебираете данные, а затем пытаетесь перебрать полученный текст: именно это и вызывает ошибку.Например, row2
на первой итерации содержит значение Hannibal
, поэтому второй цикл, по сути, пытается это сделать:
$.each('Hannibal',function(key2,value2){...
Hannibal
, просто являясь текстом, не может проходить черезэтот.У него нет ключей или значений.
Вам нужен только один цикл для этих данных.Вот тестовый код, подтверждающий это:
var guest_data = {"0":"Hannibal","firstname":"Hannibal","1":"Lecter","lastname":"Lecter","2":"Cannibals Inc.","name":"Cannibals Inc."};
function createTableByJqueryEach2(data2){
var eTable2="<table><tr><th colspan='5'>Gäste einladen</th></tr><tr><th>Person</th></tr>"
$.each(data2,function(index2, row2){
eTable2 += "<tr>";
eTable2 += "<td>"+row2+"</td>";
eTable2 += "</tr>";
});
eTable2 +="</table>";
$('#guest_table').html(eTable2);
}
createTableByJqueryEach2(guest_data);
Это приводит к следующему:
<div id="guest_table">
<table>
<tbody>
<tr>
<th colspan="5">Gäste einladen</th>
</tr>
<tr>
<th>Person</th>
</tr>
<tr>
<td>Hannibal</td>
</tr>
<tr>
<td>Lecter</td>
</tr>
<tr>
<td>Cannibals Inc.</td>
</tr>
<tr>
<td>Hannibal</td>
</tr>
<tr>
<td>Lecter</td>
</tr>
<tr>
<td>Cannibals Inc.</td>
</tr>
</tbody>
</table>
</div>
Вероятно, вы хотите иметь другой макет, это именно то, что я сделалчтобы доказать ошибку.