2011-08-19 72 views
1

我有什麼..的jQuery的getJSON()似乎不正常工作

$.getJSON('ui-DashboardWidgetsGet.php', function(msg) 
    { 
     alert(msg); 
     if(msg.error == "yes"){console.log('Error Found: '+ msg.errorMsg);} 
     else 
     { 
      ztsDashboardJSON = msg; 
     } 
    }); 
var ztsDashboardJSONCount = ztsDashboardJSON.widgets[0].length; 

的轉儲

{ "widgets": [{ "column1": [ {"weight": 1, "bID": 1, "hideMe": false, "collapse": false, "titleOf": "Test 1", "colorOf": "color-yellow", "theFunction": "functionName"}, {"weight": 2, "bID": 2, "hideMe": false, "collapse": false, "titleOf": "Test 2", "colorOf": "color-green", "theFunction": "functionName"}, {"weight": 3, "bID": 3, "hideMe": false, "collapse": false, "titleOf": "Test 3", "colorOf": "color-blue", "theFunction": "functionName"} ], "column2": [ {"weight": 1, "bID": 4, "hideMe": false, "collapse": false, "titleOf": "Test 4", "colorOf": "color-white", "theFunction": "functionName"}, {"weight": 2, "bID": 5, "hideMe": false, "collapse": false, "titleOf": "Test 5", "colorOf": "color-red", "theFunction": "functionName"}, {"weight": 3, "bID": 6, "hideMe": false, "collapse": false, "titleOf": "Test 6", "colorOf": "color-orange", "theFunction": "functionName"} ], "column3": [ {"weight": 1, "bID": 7, "hideMe": false, "collapse": false, "titleOf": "Test 7", "colorOf": "color-white", "theFunction": "functionName"}, {"weight": 2, "bID": 8, "hideMe": false, "collapse": false, "titleOf": "Test 8", "colorOf": "color-green", "theFunction": "functionName"}, {"weight": 3, "bID": 9, "hideMe": false, "collapse": false, "titleOf": "Test 9", "colorOf": "color-blue", "theFunction": "functionName"} ] }]} 

有效期爲每http://jsonlint.com/

它要求PHP從數據庫中回顯出來,它只是回聲,沒有別的。但我想,結果在JavaScript的工作似乎存在之後,它不會是我提供我想要的東西..

我的錯誤:

ztsDashboardJSON.widgets is undefined [Break On This Error] var ztsDashboardJSONCount = ztsDashboardJSON.widgets[0].length;

回答

3

您需要:

var ztsDashboardJSONCount = ztsDashboardJSON.widgets.length; // length is 1 

因爲「窗口小部件」是映射到對象數組的鍵。

如果你想獲得一個列的長度,你可以這樣做:

ztsDashboardJSON.widgets[0].column1.length; // length is 3 

Demo here.

要遍歷你的對象,以充分利用所有的部件,列和列值,你可以這樣做:

var widgets = ztsDashboardJSON.widgets; 

$.each(widgets, function(i, val) { 
    console.log("widget number" + i); 
    $.each(val, function(i2, val2) { 
     console.log(i2); 
     $.each(val2, function(i3, val3) { 
      console.log(val3.weight); 
      console.log(val3.bID); 
      console.log(val3.hideMe); 
      console.log(val3.titleOf); 
      console.log(val3.colorOf); 
      console.log(val3.theFunction); 
     }); 
    }); 
}); 

Demo here.

+0

我ULTI他們正在尋找將回聲本身的原始物體作爲一個整體來使用。不是單獨一對一。由於腳本的其餘部分最初是以這種格式編寫的,但硬編碼的字符串構建的。 – chris

+0

編輯是腳本的前綴.JSON被硬編碼的地方..這些方法確實起作用。但是,在等待答案的時候,我意識到了我的錯誤......變量被困在一個函數中,所以當函數關閉時,變量會丟到需要它的腳本的其餘部分。我需要找出一個很好的方法來將函數中的變量分解出來,這樣就可以通過腳本的其餘部分來使用這個變量了。這將等於變量= msg,而計數方面與我試圖做的事情無關在這一刻。 – chris

+0

@chris - 編輯。那是你在找什麼? – karim79