刷新页面时出现此错误:
未捕获的TypeError:listaDeAutos.autos.foreach不是函数
我在这里构建了数据,它迭代并从数据库中获取数据并将其存储在" salidaJson":
<?php
$salidaJson = '{"autos": [';
while ($row = $result->fetch_assoc()) {
$salidaJson = $salidaJson. '{';
$salidaJson = $salidaJson. '"idAuto":"' . $row['idAuto'] . '",';
$salidaJson = $salidaJson. '"Marca":"' . $row['Marca'] . '",';
$salidaJson = $salidaJson. '"Modelo":"' . $row['Modelo'] . '",';
$salidaJson = $salidaJson. '"idTipoDeVehiculo":"' . $row['idTipoDeVehiculo'] . '",';
$salidaJson = $salidaJson. '"FechaDeLanzamiento":"' . $row['FechaDeLanzamiento'] . '"';
$salidaJson = $salidaJson. '},';
}
$salidaJson = $salidaJson. '{"idAuto":"FIN", "Marca":"FIN","Modelo":"FIN","idTipoDeVehiculo":"FIN","FechaDeLanzamiento":"FIN"}';
$salidaJson = $salidaJson . ']}';
?>
现在这是我正在尝试制作的Javascript函数,目标非常简单,用集合中的数据构建一个表,我写了一半表构建,但是想知道是否它至少在第一部分工作,我得到了错误:
<script>
var miTabla = $("#tableBody");
var listaDeAutos = <?php echo $salidaJson ?>;
console.log(listaDeAutos);
function cargaTabla() {
listaDeAutos.autos.foreach(function() {
var html = '<tr><td>'+ idAuto + '</td><td>' + Marca + '</td><td>'+ Modelo + '</td></tr>';
miTabla.append(html);
})
}
根据我的理解forEach用于数组,但我的数据是一个对象,因为它包含&#34; autos&#34;包含数组,但我不知道如何使该功能与我的对象一起工作。
这是更清楚地看到的数据:
答案 0 :(得分:0)
不确定你的foreach格式在哪里,但这应该是正确的语法
$.each(listaDeAutos.autos, function(i, item) {
var html = '<tr><td>'+ item.idAuto + '</td><td>' + item.Marca + '</td><td>'+ item.Modelo + '</td></tr>';
miTabla.append(html);
});
或者如果您愿意,可以使用forEach语法 (有点slower)
listaDeAutos.autos.forEach(function(e, i) {
var html = '<tr><td>'+ e.idAuto + '</td><td>' + e.Marca + '</td><td>'+ e.Modelo + '</td></tr>';
miTabla.append(html);
});
这是基于此Plunker
虽然您正在使用它,但您可以在PHP中使用。=来清理您的代码。
$salidaJson .= '{';
...
答案 1 :(得分:0)
首先,您创建JSON的方式并不优雅,并且难以使用所有这些引号和所有内容创建。您最好创建 PHP数组,然后创建json_encode
该数组。
$res = array("autos" => array());
while ($row = $result->fetch_assoc())
{
$res['autos'][] = array("idAuto" => $row['idAuto'],
"Marca" => $row['Marca'],
"Modelo" => $row['Modelo'],
"idTipoDeVehiculo" => $row['idTipoDeVehiculo'],
"FechaDeLanzamiento" => $row['FechaDeLanzamiento']);
}
$res['autos'][] = array("idAuto" => "FIN",
"Marca" => "FIN",
"Modelo" => "FIN",
"idTipoDeVehiculo" => "FIN",
"FechaDeLanzamiento" => "FIN");
$res = json_encode($res);
其次,在您的JS脚本中,您需要解析该变量 listaDeAutos
,然后您可以按照adriani6
var listaDeAutos = JSON.parse(<?php echo $res ?>);
其次,在<?php echo $res ?>
已经注入JSON对象时,不需要解析它。这是在nico-westerdale对此答案发表评论后编辑的。
第三,请注意@JaromandaX指出的驼峰案forEach
。 JS中没有foreach
。