通过PHP和jQuery将MySQL解析为JavaScript数组


Parsing MySQL into JavaScript Arrays through PHP and jQuery

最终目标:我想把数据保存在MySQL数据库中,并把它放在JavaScript中的数组数组中,这样它就可以被客户端操纵。

到目前为止,我已经能够使用以下代码从数据库中提取数据:
<?php
...
$num=1;
$q = "SELECT blah1, blah2, blah3 WHERE blah4=$num";
$sth = mysqli_query ($database, $q);
$rows = array();
while($r = mysqli_fetch_assoc($sth)) {
    $rows[] = $r;
    }
print json_encode($rows);
?>

(from: JSON encode MySQL results)

这就是我卡住的地方,因为我在把这些数据转换成JavaScript时遇到了麻烦。

我能找到的一个解决方案是在Javascript中解析一个单独的PHP数组:

<script>
     var jsonarray = <?php echo json_encode($array); ?>;
     // now you can use jsonarray in your javascript
</script>

但是这个实现的问题是,它会将我查询的所有数据库内容输出到页面的源代码中。如果我必须这样做,我不妨跳过数据库,只保留javascript中的所有内容。

我认为必须有一种方法与jQuery/AJAX传递$num的值到PHP脚本,抓取此数据并将其放入JavaScript数组,而无需将其全部输出到页面。

如有任何帮助,不胜感激。

谢谢!

您发布的解决方案:

<script>
  var jsonarray = <?php echo json_encode($array); ?>;
  // now you can use jsonarray in your javascript
</script>

实际上是一个很好的方法。使用AJAX非常慢(因为网络延迟)。

除非出于某种原因确实需要AJAX,否则应该避免使用它。它会给页面增加明显的加载时间,通常没有任何好处。

最重要的是,在构建页面时,您希望尝试减少浏览器和服务器之间的单个网络请求的数量。请求越少,页面速度越快。对于javascript和ajax来说尤其如此,因为它们是不可预测的,浏览器发现很难优化页面的任何部分。

我们讨论的是四分之一秒与百万分之一秒相比,最终结果完全相同。

使用jQuery进行AJAX调用非常简单。查看一下文档:http://api.jquery.com/jQuery.get/

您也可以不使用AJAX

var jsonarray = eval(<?php echo json_encode($array); ?>);