使用PHP输出的Javascript数组时出现未定义的错误

时间:2013-10-27 00:08:03

标签: javascript php

为什么Chrome控制台仍然给我一个未捕获的TypeError:无法读取属性'未定义的用户'但脚本运行正常?

我正在使用PHP在内嵌到页面的javascript数组中生成值:

<script type="text/javascript">

dbArray = [

<?php
if (!$connect) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("myMysqlTable", $connect);
$result = mysql_query("SELECT * FROM nhoods");
while($row = mysql_fetch_array($result)) : 
?>
{ "Name":"<?php echo $row['Name'] ?>", "Users":<?php echo $row['Users'] ?> },
<?php endwhile; mysql_close($connect); ?>

];

</script>

以下是输出示例:

var dbArray = [
    { "Name":"Outer Richmond", "Users":5 },
    { "Name":"Central Richmond", "Users":3 },
    { "Name":"Inner Richmond", "Users":12 },
    { "Name":"USF NoPa", "Users":2 }
    ];

在单独的.js文件中,我有以下示例:

function someFunction(index) { 
    var usersfound = dbArray[index]['Users'];
        console.log(usersfound);
};

someFunction(2);

用户返回完全正常,这可行,但它仍然会抛出错误。

我知道php加载服务器端,但为什么我的javascript文件似乎与内联页面javascript不存在于同一领域。

1 个答案:

答案 0 :(得分:0)

找出原因,错误发生是因为PHP行输出不完整因此我的脚本会在它尝试从列表中提取某些不存在的东西时发生错误。该脚本现在退房。我可能会在引用周围添加一个条件,以确保该值首先存在。

即:

    var users
    if (dbArray[index]['Users']) {
       users = dbArray[index]['Users'];
    }