【问题标题】:Generate Highcharts from CSV generated by php从 php 生成的 CSV 生成 Highcharts
【发布时间】:2015-05-18 18:42:46
【问题描述】:

我对来自 csv 数据的 Highcharts 感到困惑。

从这个例子:http://jsfiddle.net/gh/get/jquery/1.9.1/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/line-ajax/

$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=analytics.csv&callback=?', function (csv) { })

它可以读取csv文件,但是当我这样设置url时,它不起作用

$.getJSON(baseurl+'webtools/analytics/submissions_data', function (csv) {
    console.log(csv);
    });

我的服务器端代码:

function submissions_data() {
    header('Content-Type: text/csv; charset=utf-8');
    $qry = "SELECT DATE(created_date) dateonly, COUNT(id) AS total FROM mf_story GROUP BY dateonly ORDER BY dateonly ASC;";
    $rows = $this->db->query($qry)->result_array();

    $output = fopen('php://output', 'w');

    $column = array("Day","Submissions");
    fputcsv($output, $column);

    foreach($rows as $data){
        $date = DateTime::createFromFormat('Y-m-d', $data['dateonly']);
        $data['dateonly'] = $date->format('n/d/Y');
        fputcsv($output, $data);
    }
}

我尝试了 $.ajax

$.ajax({
    url:baseurl+'webtools/analytics/submissions_data',
            type: 'get',
            dataType: 'jsonp',
            success: function(data) {
                console.log("data read");
            },
            error: function(jqXHR, textStatus, errorThrow){
                console.log(jqXHR['responseText']); //the csv printed here
            }

令人惊讶的是,我的 csv 打印在错误函数中。任何想法为什么?我应该怎么做才能解决它?将我的 highcharts 代码放入错误函数中有点难看。

【问题讨论】:

  • 1) “不工作”到底是什么意思? 2)您是否验证了您构建的 URL 的准确性(baseurl+'webtools/analytics/submissions_data')?什么回报? 3) 如果您有一个 csv 文件,“jsonp”似乎不是正确的数据类型。 4)“为什么?”和“我该如何解决?”需要更多具体细节才能使用...
  • @jlbriggs 1) highcharts 的样本使用了 csv 对吗?当我在控制台中将 url 更改为我自己生成的 csv 时,没有打印任何内容。 2)是的,它是有效的网址。 4) 我需要服务器端的帮助,因为我可以从highcharts.com/samples/data/… 成功获取 csv?但是在使用我的服务器端时失败了。
  • 删除该行:dataType: 'jsonp', 您没有使用jsonp 格式。那是您唯一没有回答的问题(#3),这就是您在error() 方法。
  • @PawełFus 我找到了解决方案,我将我的 csv 放在字符串中并使用 json_encode 对其进行编码:D

标签: javascript php jquery csv highcharts


【解决方案1】:

找到了解决方法,我将服务器端代码更改为 text/json 并将 csv 放入字符串中

function submissions_data() {
    header('Content-Type: text/json');
    $qry = "SELECT DATE(created_date) dateonly, COUNT(id) AS total FROM mf_story GROUP BY dateonly ORDER BY dateonly ASC;";
    $rows = $this->db->query($qry)->result_array();

    $out = "Day,Submissions\n";

    foreach($rows as $data){
       $date = DateTime::createFromFormat('Y-m-d', $data['dateonly']);
       $data['dateonly'] = $date->format('n/d/Y');
       $out.=$data['dateonly'].",".$data['total']."\n";
    }

    echo json_encode($out);
}

我的 json 可以读取它,谢谢 :D

【讨论】:

    猜你喜欢
    • 2012-01-27
    • 2013-07-04
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多