2016-11-27 40 views
1

我準備了JavaScript可視化代碼,可視化通過簡單的HTTP服務器工作,因爲所有必要的數據都在一個文件夾中。但是,如果需要從數據庫(現在是JSON文件)獲取數據輸入,我無法使其工作。如何從數據庫中獲取JSON數據?

予加載了下面的示例數據(CSV文件)到Teradata數據庫。

|x1. . . . . |y1. . . . .|z1. . . . . |x2. . . . . |y2. . . . .|z2. . . . . | 
|-0.858927763|0.121607854|-0.067815693|-0.100387679|0.142522011|-0.085021698| 
|0.759678102 |1.670849337|0.389506443 |-0.841098362|0.745253687| 0.07724956 | 
|1.617835159 |0.671663712|0.676541754 |-0.086900337|1.162505997| 0.822100957| 
|1.878302821 |0.985942302|1.756579077 |-0.418153016|2.471764891| 0.234493023| 

Sample Data

Teradata的工具的文檔說,訪問數據,index.html的代碼必須使用具有消息處理程序:

$(window).on('message', handler) 

和數據可以在處理程序中被訪問使用:

event.originalEvent.data 

在我的本地服務器中,JavaScri從CSV獲取數據PT代碼是這樣的:

<script> 
    Plotly.d3.csv('3d-scatter.csv', function(err, rows){ 
    function unpack(rows, key) { 
     return rows.map(function(row) 
     { return row[key]; }); 
    } 
</script> 

我只是想知道我應該使用到獲取和轉化JSON數據(以前「3D-scatter.csv」,現在在一個JSON數據什麼碼一個數據庫),它是從event.originalEvent.data處理程序中提取的。


我發現包含數據的處理程序。

在「消息」的事件處理程序:數據可以在該路徑(.handler.elem.visJson.data)

因此,當我打電話visJson.data,控制檯輸出一個陣列中找到。

回答

1

您可以使用瀏覽器Fetch API。全局函數可以從網絡獲取資源,返回HTTP響應的一個Promise

使用這樣的:

fetch("http://host/endpoint.json") 
    .then(res => res.json()) 
    .then(data => { 
    // data is an array of object, 
    // iterate over it and create an in-memory CSV 
    // or verify if Plotly.d3 can be fed directly this array 
    }) 
+1

儘管此代碼可以回答這個問題,提供了關於如何和/或爲什麼它解決了這個問題將改善答案的長期價值附加的上下文。 – kayess