2011-04-18 104 views
1

HI內,無法訪問數據JavaScript數組

var jsonObj = [] ; 

for (var i = 0; i < data.jobs.length; i++) { 

      jsonObj.push({id: data.jobs[i].Dater, optionValue: data.jobs[i].INCPU}); 
     } 

alert(jsonObj); 

我得到的結果作爲

[object Object],[object Object],[object Object] 
+2

又有什麼問題呢? – 2011-04-18 13:02:36

+1

是的,你應該告訴你所看到的內容而不是 – 2011-04-18 13:06:51

+0

* [沒有這樣的東西作爲「JSON對象」](http://benalman.com/news/2010/03/theres-no-such-thing-as -a-json /)* – 2011-04-18 13:46:51

回答

1

那是因爲你是在提醒數組。嘗試提醒該陣列的單個索引。

alert(jsonObj[0]) 
+3

它會輸出[object Object]? :D – 2011-04-18 13:06:01

+0

alert(jsonObj [0]),這是輸出[對象對象] – Kiran 2011-04-18 13:13:34

1

如果要生成JSON序列化,請使用像json2.js這樣的JSON解析器庫。

當您將其傳遞到alert()時,序列化表格也會產生預期結果。

+0

@Marcelo這個答案意味着JSON序列化只能通過一個單獨的庫來實現。這當然不是真的,因爲所有當前的瀏覽器都實現了[JSON全局對象](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON)。 – 2011-04-18 13:40:02

+0

@Šime:這取決於你定義爲最新的東西。如果你想支持IE7,它仍然有大約10%的市場,那麼你會遇到麻煩。而且,json2.js會自動回退內置的JSON對象(如果存在的話),所以避免它很少會被獲得。 – 2011-04-19 07:41:02

+0

@Marcelo讓我重複自己。您的答案意味着JSON序列化只能通過單獨的庫實現。 *「如果您想要X功能,請將庫Y添加到您的網頁中」*表示要素X需要庫Y(或類似的庫)。更正確的答案是:*「如果您想要X功能,請使用函數Y「*(在這種情況下爲'JSON.stringify()'),然後*」注意:一些較舊的瀏覽器(IE6,IE7,FF3 - 〜20%的市場)不實現此功能。爲了支持這些瀏覽器,將庫Z添加到您的網頁「*」。 – 2011-04-19 12:23:52

0

我相信你正在努力實現這一目標:

var obj = []; 

// populate obj in a loop 

var jsonStr = JSON.stringify(obj); 

alert(jsonStr); 

現場演示:http://jsfiddle.net/simevidas/Smd2P/1/