duanfu3634 2012-03-16 16:13
浏览 93
已采纳

php将数组返回javascript

I did a search but I am still confused as I am really new to php and ajax, so I was hoping someone can help me.

Im am using a php script within some ajax to access a database. I can echo the data to replace an element on the webpage. However I want to receive the data as an array to manipulate again in javaScript.

Here is the php

<?php $q=$_GET["q"];

$con = mysql_connect('server', 'name', 'pass'); if (!$con) //don't connect {    die('Could not connect: ' . mysql_error()); //give error }

mysql_select_db("database", $con); //select the MySQL database

$sql="SELECT * FROM table WHERE field = '".$q."'";

$result = mysql_query($sql); //$result is an array

$response = $result;

echo json_encode($response); 

echo "<table border='1'>
<tr>
<th>Heading1</th>
<th>Heading2</th>
<th>Heading3</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['field1'] . "</td>";
  echo "<td>" . $row['field2'] . "</td>";
  echo "<td>" . $row['field3'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);

?>

and he is the ajax/jScript used to call the php script.

function func(var)
{
xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) //ready
        {
            document.getElementById("div2").innerHTML=xmlhttp.responseText;

        }
    }
xmlhttp.open("GET","getTest.php?q=" + var,true);
xmlhttp.send();
}

As you can see it replaces div2 with a table with the info. But how can I instead receive the data as an array in jScript?

Cheers

  • 写回答

3条回答 默认 最新

  • dongshuo8756 2012-03-17 08:31
    关注

    As Marc B says, the result of an SQL query is a result handle that you need to read from in order to then JSON encode:

    // run the query
    $result = mysql_query("SELECT * FROM table WHERE field = '{$q}'");
    
    // fetch all results into an array
    $response = array();
    while($row = mysql_fetch_assoc($result)) $response[] = $row;
    
    // save the JSON encoded array
    $jsonData = json_encode($response); 
    

    In your script, use something like the following to merge that JSON into the JavaScript:

    <script>
      var data = <?= $jsonData ?>;
      console.log(data); // or whatever you need to do with the object
    </script>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错