上次講過WebOS 如何取得Google Finance 的股價資料 , 不過我用Palm 做了處理才可以使用 ....

這是最核心的code :
var url0 = "http://finance.google.com.hk/finance/info?client=ig&q=HKG:0005"; // do AJAX request var request = new Ajax.Request(url0, { method: 'get', evalJSON: 'force', onSuccess: this.gotResults.bind(this) }); |
1. 當按button 時, 會啟動一個 Ajax.Request (object name 係 case sensitve ... ) 的object ,
2. 讀取google finance 的網址 (變數 url0) ,
3. 取得資料後,再執行Procedure 'gotResults'
但是新問題出現了 .... 原來WebOS 不接受Google finance 的資料格式 ....
google finance 的JSON 格式 ( http://finance.google.com.hk/finance/info?client=ig&q=HKG:0005 ) :
// [ { "id": "705303" ,"t" : "0005" ,"e" : "HKG" ,"l" : "82.70" ,"l_cur" : "$82.70" ,"ltt":"16:00" ,"lt" : "8月6日 16:00" ,"c" : "+0.05" ,"cp" : "0.06" ,"ccol" : "chg" } ] |
Palm 接受的格式:
({ "id": "705303" ,"t" : "0005" ,"e" : "HKG" ,"l" : "82.70" ,"l_cur" : "$82.70" ,"ltt":"16:00" ,"lt" : "8月6日 16:00" ,"c" : "+0.05" ,"cp" : "0.06" ,"ccol" : "chg" }) |
所以我使用了Javascript 的文字處理function (replace) 移除符號 // 及 [ ]
// remove extra text result = result.replace('//',''); result = result.replace('[',''); result = result.replace(']',''); |
再加上括號 ( ) , 再使用 eval 這個 function , 指示將整段JSON 文字變成資料
// Re-package data to JSON json = eval('(' + result + ')'); |
最後把JSON 資料中的 " l " 變數 (今次係股價) 放到 price (text field) 顥示
this.controller.get('price').innerHTML = json.l ; |
如果你了解JSON , 又寫開 web application , 寫WebOS 程式會變得很簡單 ~
ref : https://developer.palm.com/distribution/viewtopic.php?f=55&t=6728