javascript - 将 php 生成的数据发送到 javascript 函数的更好方法是什么

标签 javascript php

<分区>

例如,我有一些数据库中的数据可以通过 php 获取。

我想通过一些花哨的 javascript 图表插件将数据显示为图表。

有两种方法可以完成这项工作。

首先让php在JS脚本中输出行数据。比如下面的代码,

图表.php

<?php
   $data=Array(); 
   //$data would be assigned some value from database
?>
<script>
   var data=[];
   data=<?php echo json_encode[$data];?>;
   draw_fancy_chart(data);
</script>

优点是这种方法效率很高,只要从服务器请求页面,用户就可以直接看到图表(假设draw_fancy_chart函数效率很高)。

但缺点是我无法提取 JS 脚本,甚至无法对 draw_fancy_chart.js 进行一些缩小。所有用户都可以通过 View 源查看我的 JS。

第二种方法是使用 AJAX。

chart_ajax.php

echo json_encode[$data];

chart.html

<script>
$.ajax({
  url: "chart_ajax.php"      
  }).done(function(data) {
    draw_fancy_chart(data);
   });
</script>

优点是我可以把所有的JS脚本打包成一个JS文件。 但是用户体验很差,用户会因为 ajax 请求而面临加载微调框。正如我们所知,不需要请求。

有人能给我一个更好的解决方案吗?非常感谢。

最佳答案

在将 HTTP 请求数量保持在最低限度的同时保持分离的第三个选项:

<script>
var data = <?php json_encode($data)?>;
</script>
<script src="your-javascript.js"></script>

...然后 your-javascript.js 使用 data。这里的缺点是 data 是一个全局变量,因此为它选择一个可能唯一的名称以避免冲突(全局命名空间可笑拥挤)。

关于javascript - 将 php 生成的数据发送到 javascript 函数的更好方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23885797/

相关文章:

php - 默认情况下在结帐页面上显示运输字段

php - MySQL 行与列的联合/连接

javascript - 使用 JQuery Ajax 提交表单不在服务器中工作,但在本地主机中工作 codeigniter

php - 如何使用 php 将 html 标记写入另一个 html 文件?

javascript - 将 ngInit 添加到具有指定 css 类的所有元素

javascript - 如何绑定(bind)Jquery函数来点击?

javascript - 型号不变。最后一个中有多个 ng-repeat 和复选框。

javascript - 视频 : Getting timestamp of video dynamically

javascript - 是否应该处理浏览器之间的兼容性问题?

php - 用 PHP 中的函数动态替换