我尝试使用以下代码从数据库中检索值,并使用php数组将它们存储在javascript数组中。我尝试使用下面的代码,但它返回给我一个未定义的引用错误数组。代码如下。
<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("cerebra", $con);
$sql="select name from details order by download desc limit 20";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
$query=mysql_query($sql,$con);
$names=array();
$index=0;
while($row=mysql_fetch_array($query)){
$names[$index]=$row[0];
$index++;
}
?>
<script>
var comp=new array();
<?php
$i=0;
foreach($names as $a){
$i++;
echo "comp[$i]='".$a."';\n";
}
?>
for(i=0;i<comp.length;i++)
alert(comp[i]);
</script>
答案 0 :(得分:1)
var comp = new Array()
不是array()
。无论如何都要跳过它并立即使用var comp = []
。
答案 1 :(得分:1)
我认为你这是错误的做法。这是一个更好的方法:
<?php
$phpArray = array("foo", "bar", "baz");
//....
?>
<script type="text/javascript">
var jsArray = <? echo json_encode($phpArray); ?>;
</script>
答案 2 :(得分:1)
首先,为什么要运行两次查询?
...
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
$query=mysql_query($sql,$con);
...
Javascript中的第二个数组对象称为Array
,而不是array
。
所以试试
var comp = new Array();
<强>更新强>
但是我得到的第一个值是未定义的。怎么会? - user2129868
因为在获取值之前递增$i
。因此,在您的Javascript第一次迭代中,$i
为1
而非0
。
所以改变
<script>
var comp=new array();
<?php
$i=0;
foreach($names as $a){
$i++;
echo "comp[$i]='".$a."';\n";
}
?>
for(i=0;i<comp.length;i++)
alert(comp[i]);
</script>
到
<script>
var comp=new array();
<?php
$i=0;
foreach($names as $a){
echo "comp[".$i++."]='".$a."';\n";
}
?>
for(i=0;i<comp.length;i++)
alert(comp[i]);
</script>
否则,当您尝试使用
获取元素时for(i=0;i<comp.length;i++)
alert(comp[i]);
0
将是未定义的,因为1
是您添加的第一个索引。
答案 3 :(得分:1)
new array();
应该是
new Array();
在你的javascript中。
编辑:你也应该停止使用mysql_ *函数。