首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Javascript获取外部JSON值

使用Javascript获取外部JSON值
EN

Stack Overflow用户
提问于 2018-07-01 00:41:35
回答 2查看 215关注 0票数 1

我正在尝试使用Morris JS图表,我遇到的示例目前具有此设置。这里有一个主要的index.html文件,

代码语言:javascript
复制
<div id="morris-bar-example" class="dash-chart"></div> 
<script src="assets/plugins/morris/morris.min.js"></script>           
<script src="assets/pages/dashborad.js"></script>

在dashborad.js内部是以下JavaScript,

代码语言:javascript
复制
            var $barData = [
            {y: '2006', a: 54, b: 60},
            {y: '2007', a: 75, b: 65},
            {y: '2008', a: 50, b: 40},
            {y: '2009', a: 75, b: 65},
            {y: '2010', a: 50, b: 40},
            {y: '2011', a: 75, b: 65},
            {y: '2012', a: 100, b: 90},
            {y: '2013', a: 90, b: 75},
            {y: '2014', a: 75, b: 65},
            {y: '2015', a: 50, b: 40},
            {y: '2016', a: 75, b: 65},
            {y: '2017', a: 100, b: 90},
            {y: '2018', a: 90, b: 75}
        ];
        this.createBarChart('morris-bar-example', $barData, 'y', ['a', 'b'], ['Series A', 'Series B'], ['#2f8ee0','#4bbbce']);

我正在尝试弄清楚如何从外部JSON文件导入这些值,我希望使用PHP动态创建json,但我不知道从这个PHP文件导入这些值的JS。有没有人能举个例子说明这是什么样子?我是否可以直接将PHP变量传递给dashborad.js并跳过外部JSON?

像这样,

代码语言:javascript
复制
var $barData = [{y: '2006', a: "<?php echo $val; ?>", b: 60}];}
EN

回答 2

Stack Overflow用户

发布于 2018-07-01 01:03:58

解决方案是将dashborad.js重命名为dashborad.php,并使用相同的脚本标记将其调用到index.html文件中,如下所示:

代码语言:javascript
复制
<script src="assets/pages/dashborad.php"></script>

然后在dashborad.php中只需定义变量并将其回显到JSON块中,如下所示,

代码语言:javascript
复制
var $barData = [{y: '2006', a: "<?php echo $val; ?>", b: 60}];}

解决方案并不是最优的,因为现在服务器每次调用这个JS文件时都需要加载PHP模块,但是如果有人有更好的方法来做到这一点而不是非常复杂,我很乐意学习。

票数 0
EN

Stack Overflow用户

发布于 2018-07-01 01:28:37

最好使用JSON.You,可以在服务器端创建$barData,并可以使用json_encode()方法对其进行编码,如下所示:

代码语言:javascript
复制
<?php
$barData= array(..someArray);
$myJSON = json_encode($barData);
echo $myJSON;
?>

在你的客户端中,你可以这样描述:

代码语言:javascript
复制
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
    var myObj = JSON.parse(this.responseText);
    this.createBarChart('morris-bar-example', myObj[2], 'y', ['a', 'b'], ['Series A', 'Series B'], ['#2f8ee0','#4bbbce']);
}
};
xmlhttp.open("GET", "dashboard.php", true);
xmlhttp.send();

希望它能解决你的问题!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51116714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档