作者a83294 (馬岱)
看板Ajax
標題[問題] RoR的hightchart如何取得資料
時間Mon Dec 2 22:41:00 2013
大家好,這個問題不知道應該是問Ruby還是問ajax..
最近在學習,寫了個網頁,目的是間隔10秒回傳數據跟顯示
每隔10秒生成新數據 -> 放入DB (postgresql) -> 從DB讀取
最末項顯示
目前RoR那邊的架構已經完成,要顯示在用戶端時
用了hightchart的套件
http://www.highcharts.com/demo/dynamic-update
其中的程式碼 (節錄在下面)
y軸就是我要畫出的點,但我試了好幾個方法都沒辦法直接取用資料庫的資料
上網查了幾個方法,說可以用AJAX,但大多是ASP.net的(不會用= =)
也有人說RoR可以直接讀取..
$('
#container').highcharts({
chart: {
type: 'spline',
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
events: {
load: function() {
// set up the updating of the chart each second
var series = this.series[0];
setInterval(function() {
var x = (new Date()).getTime(), // current time
y = <%= Mydata.last.value %>;
series.addPoint([x, y], true, true);
}, 10000);
}
}
},
我目前是這樣寫,但很明顯的,y取不到值...
有沒有甚麼方法可以成功呢? 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.89.71
1F:→ TonyQ:你要把資料先放到 client 去 再透過 JS 取值 12/03 10:24
謝謝版主,我將資料用@mydata=Mydata讀取過來之後,我將上面的黃色那行改成
y = <%= @mydata.last.value %>
可以讀取到最後的值,但10秒之後畫的點,還是同一個值
就是client端load網頁“那時”的最後一點
之後,我在網路上看到一種寫法
$.ajax({
async: false,
type: "POST",
url: URL,
dataType: 'JSON',
success: function(data) {
y = JSON.parseInt(data.last.value);
}
});
似乎..可以直接呼叫資料庫? 可是我不太懂也用不出來
網路上的範例都是呼叫.ashx檔案,但RoR架構好像沒有這個東西,
拜託了,卡了好久....
※ 編輯: a83294 來自: 140.121.146.39 (12/03 12:49)
2F:→ TonyQ:簡單作法,你先把那個變數的整個內容轉成 json string 12/03 12:56
3F:→ TonyQ:然後放到 javascript 寫個 var data= <%=json_str%>; 12/03 12:56
4F:推 TonyQ:之後再透過 data 這個 js obj 去 access. 12/03 12:57
5F:→ TonyQ:進階作法就是寫 json service 從 js 去撈... 12/03 12:57
6F:→ TonyQ:但如果你簡單作法都不會,進階作法只會讓你更 confuse XD 12/03 12:57
7F:推 qwer820404:我最近用highchart開發了dashboard...但是用.net 12/03 22:15
8F:推 qwer820404:真的再不會再私信給我吧 12/03 22:18
9F:推 qwer820404:你client那邊 10秒的timer是有寫對 但是 12/03 22:20
10F:→ qwer820404:你用inline code的方式寫…當然會一直讀到一樣 12/03 22:20
11F:→ qwer820404:你的操控權在client,service那端要用一個service 12/03 22:21
12F:→ qwer820404:說錯 server那端 你要放一個service讓ajax可以呼叫 12/03 22:21