[問題] RoR的hightchart如何取得資料

看板Ajax作者 (馬岱)時間10年前 (2013/12/02 22:41), 編輯推噓4(408)
留言12則, 2人參與, 最新討論串1/1
大家好,這個問題不知道應該是問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

12/03 10:24, , 1F
你要把資料先放到 client 去 再透過 JS 取值
12/03 10:24, 1F
謝謝版主,我將資料用@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)

12/03 12:56, , 2F
簡單作法,你先把那個變數的整個內容轉成 json string
12/03 12:56, 2F

12/03 12:56, , 3F
然後放到 javascript 寫個 var data= <%=json_str%>;
12/03 12:56, 3F

12/03 12:57, , 4F
之後再透過 data 這個 js obj 去 access.
12/03 12:57, 4F

12/03 12:57, , 5F
進階作法就是寫 json service 從 js 去撈...
12/03 12:57, 5F

12/03 12:57, , 6F
但如果你簡單作法都不會,進階作法只會讓你更 confuse XD
12/03 12:57, 6F

12/03 22:15, , 7F
我最近用highchart開發了dashboard...但是用.net
12/03 22:15, 7F

12/03 22:18, , 8F
真的再不會再私信給我吧
12/03 22:18, 8F

12/03 22:20, , 9F
你client那邊 10秒的timer是有寫對 但是
12/03 22:20, 9F

12/03 22:20, , 10F
你用inline code的方式寫…當然會一直讀到一樣
12/03 22:20, 10F

12/03 22:21, , 11F
你的操控權在client,service那端要用一個service
12/03 22:21, 11F

12/03 22:21, , 12F
說錯 server那端 你要放一個service讓ajax可以呼叫
12/03 22:21, 12F
文章代碼(AID): #1Id9l_0q (Ajax)