2010-12-09 53 views
0

我試圖打印JSON,我得到這樣的:打印JSON從變量在Javascript

jsonfields = $.ajax({ 
url: "ajax.php?getsensors="+raw.deviceId, 
async: false 
}).responseText; 

成ExtJS的數據存儲,看起來像這樣:

Ext.grid.dummyData = [ 
    //jsonfields, 
    //["ping"],["location"],["death"],["birth"],["DeviceInfo"], 
    ['3m Co',71.72,0.02,0.03,'4/2 12:00am', 'Manufacturing'], 
    ['Alcoa Inc',29.01,0.42,1.47,'4/1 12:00am', 'Manufacturing'], ... 

所以,當我提醒它提醒變量'jsonfields'

["ping"],["location"],["death"],["birth"],["DeviceInfo"] 

但它並沒有呈現給網格,但是當我硬編碼行a進入json,它渲染。我設置我的jsonfields變種如下:

var jsonfields; 

這是我在腳本標記中做的第一件事。我知道它的價值因警報而更新。那麼與預先設置的變量顯示JSON的方式相比,在硬編碼時它有什麼不同?

謝謝!

更新:我也可以看到鉻開發工具XHR中的ajax請求的響應,它似乎結構相同:[「ping」],[「location」],[「death」],[ 「出生」],[「DeviceInfo」]

alert(typeof jsonfields); 

返回「字符串」

+2

`[「ping」],[「location」],[「death」],[「birth」],[「DeviceInfo」]看起來不是有效的JSON。 – 2010-12-09 22:38:43

+0

我認爲它們是以逗號分隔的多個JSON,即樣本數據的結構如何,當數據手動輸入到商店時它會正確呈現。 – 2010-12-09 22:40:15

回答

1

這將是更好的糾正服務器,因此它產生有效的JSON,然後使用Ext.data.JsonStore

如果你不能糾正服務器這裏是一個非常手動的解決方案:

jsonfields = Ext.decode('[' + $.ajax({ 
    url: "ajax.php?getsensors="+raw.deviceId, 
    async: false 
}).responseText + ']'); 

Ext.grid.dummyData = jsonfields.concat([ 
    ['3m Co',71.72,0.02,0.03,'4/2 12:00am', 'Manufacturing'], 
    ['Alcoa Inc',29.01,0.42,1.47,'4/1 12:00am', 'Manufacturing'], ... 
]);