首页 > 解决方案 > 在 PHP 和 Javascript 之间传递数组数据是未定义的

问题描述

我有一个关联的 PHP 数组,我需要在 Javascript 中访问以检查manufacturer. 我目前在页面上输出这个内联,然后读入一个单独的 JS 文件。

<?php
$carsData = array();
foreach ($cars as $car) {
    $carsData[] = ['id' => $car->id, 'title' => $car->title, 'manufacturer' => $car->manufacturer];
}
$carsDataString = json_encode($carsData);
?>
<script>
carsData = <?php echo $carsDataString . ';';?>
</script>

到目前为止,这有效 - 源代码完全符合我的预期:

carsData = [{"id":2,"title":"Astra","manufacturer":"2"},{"id":3,"title":"Tepee","manufacturer":"3"},{"id":4,"title":"C4 Grand","manufacturer":"4"},{"id":5,"title":"Civic","manufacturer":"5"},{"id":6,"title":"Jazz","manufacturer":"5"}];

在我迄今为止在 JS 中阅读此内容的微弱尝试中,我有以下内容:

        $.each(carsData, function(key, value) {
            console.log(key['manufacturer']);
        });

在我的控制台中,这是输出undefined, undefined, undefined, undefined. 如果我carsData在控制台中执行,我会完全按照我的预期看到对象。

那么我做错了什么?我需要能够接受并执行以下操作:

        $.each(carsData, function(key, value) {
            if (key['manufacturer'] = 5 {
                $('#manufacturer' + key['manufacturer'].show();
            }
        });

请注意,我已将其简化为“5”的值,因为该值实际上来自另一个脚本,并且按我的预期在那里打印 5。

标签: javascriptphpmultidimensional-array

解决方案


要使 js 有效,您需要在;此行的末尾添加一个

carsData = <?php echo $carsDataString;?>; 

推荐阅读