2015-05-18 82 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