作者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