php数组没有出现在javascript中

时间:2016-03-12 01:49:40

标签: javascript php mysql arrays

我从MySQL中的数据创建了一个值数组。然后我尝试在Javascript中打印它,但不幸的是它没有出现。 数据库有两个列:txt.style.left = x+'px'; gurtej

singh

当我尝试使用<?php require_once('config.php'); function readAttribute($connect){ $resultArray=array(); $sql="SELECT Attributename,Entityname FROM temp_data_attribute"; $res=mysqli_query($connect,$sql); echo mysqli_num_rows($res); if(mysqli_num_rows($res)==0){ return 0; } else{ while($result=mysqli_fetch_array($res)){ array_push($resultArray,$result[0]); } return $resultArray; } } ?> <html> <body> <script> var jArray= <?php $resultArray=readAttribute($connect); if($resultArray==0){ $resultArray=[]; } echo json_encode($resultArray);?>; var counter=<?php echo count($resultArray);?>; document.write(jArray[0]); </script> <?php print_r($resultArray); ?> </body> </html> 在php中打印时,这就是结果。

  

数组([0] =&gt; gurtej [1] =&gt; singh)

3 个答案:

答案 0 :(得分:1)

生成的JavaScript语句不仅包含vararray作为JSON:

var jArray = 2["gurtej","singh"];

额外2来自显示行数的echo中的readAttribute()

function readAttribute($connect){
    $resultArray=array();
    $sql="SELECT Attributename,Entityname FROM temp_data_attribute";
    $res=mysqli_query($connect,$sql);
    echo mysqli_num_rows($res);
//  ^^^^

通过跟随数字,&#34;数组&#34;更改含义并被解释为bracket property accessor comma operator。该陈述的行为与:

相同
var jArray = (2).singh;

而且,2号码(通常)没有名为singh的属性。所以,你得到undefined,它不具备属性。

console.log(typeof jArray); // 'undefined'
console.log(jArray[0]);     // TypeError

要删除2,您需要删除或注释掉其他echo

function readAttribute($connect){
    $resultArray=array();
    $sql="SELECT Attributename,Entityname FROM temp_data_attribute";
    $res=mysqli_query($connect,$sql);
    // echo mysqli_num_rows($res);
    // ...
}
var jArray = ["gurtej","singh"];

console.log(typeof jArray); // "object"
console.log(jArray[0]);     // "gurtej"

答案 1 :(得分:0)

让我们稍微清理一下这个功能,我们也会解决这个问题

function readAttribute($connect){
    $resultArray = array();
    $sql="SELECT Attributename,Entityname FROM temp_data_attribute";
    $res=mysqli_query($connect,$sql);
    //echo mysqli_num_rows($res);

    while($result = mysqli_fetch_assoc($res)){
        $resultArray[] = $result;
    }

    return $resultArray;
}

您的问题是您使用的是$result[0],但这只是推送第一列。如果您要json_encode这个,我会避免使用fetch_array()(没有参数),因为它会为每列返回一个数字AND关联键值(这会使数据集膨胀行)

答案 2 :(得分:0)

让我们清理代码:

<html>
<body>
<!-- container to hold data -->
<div id='container'></div>
<script>
   <?php 
      //--- get the results from the database
      $resultArray=readAttribute($connect);
      //--- convert if necessary
      if($resultArray==0){
         $resultArray=[];
      }
   ?>;
   //--- place results into JavaScript array
   var jArray= <?php echo json_encode($resultArray);?>;
   //--- show the raw array
   document.getElementById('container').innerHTML = jArray[0];
</script>
<?php
print_r($resultArray);
?>
</body>
</html>