【问题标题】:Codeigniter - How to pass JSON to JS file in assets folder?Codeigniter - 如何将 JSON 传递给资产文件夹中的 JS 文件?
【发布时间】:2017-09-21 01:10:06
【问题描述】:

我正在尝试将 json 从我的控制器传递到我的资产文件夹中的 JS

这是我的container.js

Highcharts.chart('container', {
    chart: {
        type: 'column'
    },
    series: [{
        name: 'Umur',
        colorByPoint: true,
        data: <?php echo json_encode($based_on_age); ?>
    }],
  });

这是我的控制器:

public function index(){
    $sbow=array();

    foreach ($this->m_data->based_on_weeks()->result_array() as $row) {
        $sbow[]=array($row['range'],(float)$row['total']);
    }
    $data['based_on_weeks'] = $sbow;

    $this->load->assets?(container.js,$data); //is there a way to pass data to assets?
    $this->load->view('state.html');
}

【问题讨论】:

    标签: javascript php json codeigniter


    【解决方案1】:

    我相信,您可以简单地将数据传递给您的视图文件。 & 你的 JS 文件中也会有这些数据。只需在您的视图文件中的脚本标签中创建一个变量,即可在您的“container.js”文件中访问它

    你可以像这样使用

    var highChartData = <?php echo json_encode($data["based_on_weeks"])?>;
    

    在 container.js 中,你可以这样做

    Highcharts.chart('container', {
        chart: {
            type: 'column'
        },
        series: [{
            name: 'Umur',
            colorByPoint: true,
            data: highChartData
        }],
      });
    

    【讨论】:

    • 您可能希望将 '&lt;?php echo $data['based_on_weeks']?&gt;'; 更改为 &lt;?php echo json_encode($data['based_on_weeks'])?&gt;;(json_encode 且不带引号),因为 OP 似乎想要 json。
    • 如果您希望避免来自 JSHint 的警告,请使用 window.highChartData
    • 当我尝试这个时,我无法将我的变量从我的视图传递给我的 js。它总是在highChartData 中显示未定义的值。我该怎么办?
    【解决方案2】:

    您希望执行此操作的方式行不通,因为 CodeIgniter 是一个 PHP 框架,因此在服务器端运行,而作为 JavaScript 的 container.js 文件是客户端。将数据/内容放入客户端项目并不是一件好事,除非您每次都构建这些文件并动态服务器。

    除了@AgamBanga 的回答,您还可以直接在您的视图文件中执行以下操作(尽管您需要每次都包含该视图,或者在您想要图表的每个视图中都包含它:

    Highcharts.chart('container', {
        chart: {
            type: 'column'
        },
        series: [{
            name: 'Umur',
            colorByPoint: true,
            data: <?php echo json_encode($data['based_on_weeks'])?>
        }],
      });
    

    【讨论】:

      猜你喜欢
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 2016-02-01
      • 1970-01-01
      • 2023-01-29
      • 2013-06-24
      • 1970-01-01
      相关资源
      最近更新 更多