【问题标题】:php return array into javascriptphp将数组返回到javascript
【发布时间】:2012-04-02 04:52:40
【问题描述】:

我进行了搜索,但我仍然很困惑,因为我对 php 和 ajax 真的很陌生,所以我希望有人可以帮助我。

我在一些 ajax 中使用 php 脚本来访问数据库。我可以回显数据以替换网页上的元素。但是我想将数据作为数组接收,以便在 javaScript 中再次操作。

这里是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);

?>

他就是用来调用php脚本的ajax/jScript。

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();
}

如您所见,它将 div2 替换为包含信息的表格。但是我怎样才能在 jScript 中以数组的形式接收数据呢?

干杯

【问题讨论】:

  • $resultNOT 数组。这是一个mysql结果句柄。您不能对其进行 json_encode 并在 Javascript 中从中获取可用的查询结果。
  • 你必须先从$result获取结果,然后才能json_encode()它。
  • 您应该花十分钟的时间来learn PDO,因为您的变量$q 被插入到您的SQL 中没有被转义
  • 谢谢大家。我现在已经使用了一些 PDO 并进一步研究了 php

标签: php javascript mysql ajax return


【解决方案1】:

如果你真的有复杂的对象,你应该研究一下 JSON

【讨论】:

    【解决方案2】:

    正如 Marc B 所说,SQL 查询的结果是您需要从中读取的结果句柄,以便进行 JSON 编码:

    // 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); 
    

    在您的脚本中,使用类似以下的内容将该 JSON 合并到 JavaScript:

    <script>
      var data = <?= $jsonData ?>;
      console.log(data); // or whatever you need to do with the object
    </script>
    

    【讨论】:

    • 感谢我自己设法做到了这一点,但现在我正在尝试在 javascript 中接收 json_encode。如果我回显,我可以打印出数组,但我不知道如何将它发送回我的 jScript
    • 我已经编辑了上面的答案,以展示如何将数据作为 JavaScript 标记的一部分包含到页面中。您可以将 JSON 数据视为在 JavaScript 中创建的任何常规对象,例如 [ {field: 'value'}, {field: 'othervalue'}]
    【解决方案3】:
    <script>
    var foo = <?php echo json_encode($arr); ?>;
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 2015-04-02
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      相关资源
      最近更新 更多