2015-05-18 54 views
0

我与来自csv数据的Highcharts混淆。从php生成的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代码放在错误函数中有点难看。

+0

1)你是什么意思完全相同通过“不工作”? 2)您是否验证过构建的URL的准确性(baseurl +'webtools/analytics/submissions_data')?什么返回? 3)如果你有一个csv文件,“jsonp”似乎不是正确的数据类型。 4)“为什么?”和“我该如何解决它?”需要更具体的细节来处理... – jlbriggs

+0

@jlbriggs 1)来自highcharts的样本使用csv对不对?当我将url更改为我自己的csv-generated时,在控制台中,没有打印任何内容。 2)是的,它有效的网址。 4)我需要服务器端的帮助,因为我可以从http://www.highcharts.com/samples/data/jsonp.php?filename=analytics.csv&callback=中成功获取csv。但在使用我的服务器端时失败。 –

+0

删除该行:'dataType:'jsonp','你没有使用'jsonp'格式..这是你唯一没有回答的问题(#3),这就是你在错误中看到数据的罪魁祸首()'方法。 –

回答

0

找到了解决,我改变了我的服务器端代码为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