为什么Chrome控制台仍然给我一个未捕获的类型错误:无法读取未定义的属性"用户",但脚本工作正常?
我正在使用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 不存在于同一个领域。
找出原因,发生错误是因为 PHP 行输出不完整,因此我的脚本在尝试从列表中提取不存在的内容时都会出错。 脚本现在签出。我可能会在引用周围放置一个条件,以确保该值首先存在。
即:
var users
if (dbArray[index]['Users']) {
users = dbArray[index]['Users'];
}