Javascript 从php生成的CSV生成Highcharts

Javascript 从php生成的CSV生成Highcharts,javascript,php,jquery,csv,highcharts,Javascript,Php,Jquery,Csv,Highcharts,我对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')

我对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代码放入错误函数有点难看。

找到了修复方法,我将服务器端代码更改为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

1)你说的“不工作”到底是什么意思?2) 您是否验证了构建的URL(baseurl+‘webtools/analytics/submissions_data’)的准确性?什么回报?3) 如果您有一个csv文件,“jsonp”似乎不是正确的数据类型。4) “为什么?”和“我如何修复它?”需要更具体的细节来处理…@jlbiggs 1)highcharts中的示例使用csv对吗?当我将url更改为我自己生成的csv时,在控制台中,没有打印任何内容。2) 是的,它是一个有效的url。4) 我需要服务器端的帮助,因为我可以从中成功获取csv?但使用我的服务器端时失败。请删除该行:
dataType:'jsonp',
您没有使用
jsonp
格式。。那个这是你唯一没有回答的(#3),这就是你在
error()
方法中看到数据的原因。@PawełFus我找到了解决方案,我把我的csv放在字符串中,并用json编码:D
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);
}