【问题标题】:Reference Error array is not defined [closed]参考错误数组未定义[关闭]
【发布时间】:2013-03-02 13:49:37
【问题描述】:

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

【问题讨论】:

  • 一个可能不相关的注释:$index 在你的while 循环中不需要你也可以使用$names[] = $row[0]
  • 您的浏览器的开发工具将能够为您指出未定义的确切内容;那么你必须确定原因并解决这个问题。

标签: php javascript mysql html


【解决方案1】:

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

...

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

...

在 Javascript 中,第二个数组对象被称为 Array,而不是 array。 所以试试

var comp = new Array();

更新:

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

因为您在获取值之前增加了$i。所以 $i1 而不是 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 是您添加的第一个索引。

【讨论】:

    【解决方案2】:
    new array();
    

    应该是

    new Array();
    

    在你的 javascript 中。

    编辑:你也应该停止使用 mysql_* 函数。

    【讨论】:

      【解决方案3】:

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

      <?php
        $phpArray = array("foo", "bar", "baz");
        //....
      ?>
      
      <script type="text/javascript">
      var jsArray = <? echo json_encode($phpArray); ?>;
      </script>
      

      取自这里:How to use an array value from php to javascript?

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 但是得到的第一个值是未定义的。怎么会?
        • 在我更新的答案中了解为什么您在 Javascript 中遇到 undefined 问题。
        • 是的,愚蠢的我......对不起..我把增量放在那里调试代码。这最终给了我一个错误。
        猜你喜欢
        • 2020-09-04
        • 1970-01-01
        • 2021-04-29
        • 2023-03-14
        • 2014-07-25
        • 2016-06-02
        相关资源
        最近更新 更多