上次講過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

Add comment


Security code
Refresh