加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

动态地将存储在php中的数据添加到嵌套的json中

发布时间:2020-12-13 17:14:23 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试动态地在json中为jQuery甘特图生成数据.我知道 PHP,但我完全使用 JavaScript.我已经阅读了十几个关于如何动态地向json添加数据的解决方案,并尝试了几十种组合而没有任何东西.这是json格式: var data = [{ name: "Sprint 0",desc: "Analysis",valu
我正在尝试动态地在json中为jQuery甘特图生成数据.我知道 PHP,但我完全使用 JavaScript.我已经阅读了十几个关于如何动态地向json添加数据的解决方案,并尝试了几十种组合而没有任何东西.这是json格式:

var data = [{
    name: "Sprint 0",desc: "Analysis",values: [{
        from: "/Date(1320192000000)/",to: "/Date(1322401600000)/",label: "Requirement Gathering",customClass: "ganttRed"
        }]
    },{
    name: " ",desc: "Scoping",values: [{
        from: "/Date(1322611200000)/",to: "/Date(1323302400000)/",label: "Scoping",<!-- Somoe more data-->

      }];

现在我有php db结果中的所有数据.在这里:

$rows=$db->fetchAllRows($result);
$rowsNum=count($rows);

这就是我想要创建json的方式:

var data='';
<?php foreach ($rows as $row){ ?>
data['name']="<?php echo $row['name'];?>";
data['desc']="<?php echo $row['desc'];?>";
data['values'] = {"from" : "/Date(<?php echo $row['from'];?>)/","to" : "/Date(<?php echo $row['to'];?>)/","label" : "<?php echo $row['label'];?>","customClass" : "ganttOrange"};
}

但是这不起作用.我试过没有循环并用纯文本替换php变量只是为了检查,但它也没有用.显示没有添加项目的图表.如果我通过将新项目添加到值列表来添加新项目,则它可以正常工作.因此,甘特本身或路径没有问题.基于以上所有,我假设问题是向json添加普通数据.有人可以帮我解决一下吗?

解决方法

首先,您要将属性添加到字符串而不是构建对象.如果你真的想这样做:

var data = [],row;
 <?php foreach ($rows as $row) : ?>
     row = {};
     row.name ="<?php echo $row['name'];?>";
     row.desc ="<?php echo $row['desc'];?>";
     row.values = {"from" : "/Date(<?php echo $row['from'];?>)/","customClass" : "ganttOrange"};
     data.push(row);
 <?php endforeach; ?>

无论如何它是不安全的(结果是正常的JS代码,不是正确的JSON对象 – 但是当你将它分配给变量时,我认为它不必是严格的JSON格式)

更好的方法是在PHP中构建数据结构并使用json_encode函数为JavaScript生成JSON数据:

<?php
 $data = array();
 foreach ($rows as $row) {
      $data[] = array(
          'name'   => $row['name'],'desc'   => $row['desc'],'values' => array(array(
              'from'        => '/Date('.$row['from'].'>)/','to'          => '/Date('.$row['to'].')/','label'       => $row['label'],'customClass' => 'ganttOrange',))
      );
 }
 ?>
 var data = <?php echo json_encode($data); ?>;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读