-5

我尝试使用以下代码从数据库中检索值并使用 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>
4

4 回答 4

1

var comp = new Array()不是array()。无论如何跳过它并var comp = []立即使用。

于 2013-03-14T09:30:10.240 回答
1

我认为你的做法是错误的。这是一个更好的方法:

<?php
  $phpArray = array("foo", "bar", "baz");
  //....
?>

<script type="text/javascript">
var jsArray = <? echo json_encode($phpArray); ?>;
</script>

取自这里:如何使用从 php 到 javascript 的数组值?

于 2013-03-14T09:30:43.653 回答
1

首先,为什么要运行两次查询?

...

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
$query=mysql_query($sql,$con);

...

其次在 Javascript 中调用数组对象Array,而不是array. 所以尝试

var comp = new Array();

更新:

但我得到的第一个值是未定义的。怎么会?– 用户2129868

因为您$i在获得价值之前会增加。$i也是如此,1而不是0在您的 Javascript 的第一次迭代中。

所以改变

<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它是您添加的第一个索引。

于 2013-03-14T09:31:12.997 回答
1
new array();

应该

new Array();

在你的 JavaScript 中。

编辑:您还应该停止使用 mysql_* 函数。

于 2013-03-14T09:31:43.110 回答