无法使用foreach迭代数据

时间:2017-11-06 01:09:28

标签: javascript jquery foreach

刷新页面时出现此错误:

  

未捕获的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;包含数组,但我不知道如何使该功能与我的对象一起工作。

这是更清楚地看到的数据:

console.log output

2 个答案:

答案 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 autos >

var listaDeAutos = JSON.parse(<?php echo $res ?>);

其次,在<?php echo $res ?>已经注入JSON对象时,不需要解析它。这是在nico-westerdale对此答案发表评论后编辑的。

第三,请注意@JaromandaX指出的驼峰案forEach。 JS中没有foreach

相关问题