2014-01-09 66 views
1

我有一個JSON對象,看起來像這樣:印刷JSON對象的jQuery到HTML

var content = '[{"title":"John Apple","lastname":"Apple"}, 
{"title":"Kumar Patel","lastname":"Patel"}, 
{"title":"Michaela Quinn","lastname":"Quinn"}, 
{"title":"Peyton Manning","lastname":"Manning"}, 
{"title":"John Doe","lastname":"Doe"}, 
{"title":"Jane Lee","lastname":"Lee"}, 
{"title":"Dan McMan","lastname":"McMan"}, 
{"title":"Yu Win","lastname":"Win"}]'; 

,我試圖用jQuery來編輯它在我div標籤與content-view

的ID顯示

這裏是我的jQuery:

$.each(content, function(t, l){ 
    $('#view-content').appendTo('<div id = "' + l + '">' + t + '</div>'); 
}); 

有關我的jsfiddle,由於某種原因,這是在這裏:http://jsfiddle.net/gAWTV/

它只是結果空白。有沒有人有任何想法?我難倒...

---編輯---

我想要做的就是擁有的一切輸出到自己的div標籤是這樣的:

<div id="Apple">John Apple</div> 
<div id="Patel">Kumar Patel</div> 
<div id="Quinn">Michaela Quinn</div> 
etc... 
+0

控制檯顯示: 不能使用「在」運營商[{「稱號」:「約翰蘋果」,「姓氏」:「蘋果」}搜索「332」,{「稱號」:「庫馬爾Patel「,」lastname「:」Patel「},{」title「:」Michaela Quinn「,」lastname「:」Quinn「},{」title「:」Peyton Manning「,」lastname「:」Manning「 {「title」:「John Doe」,「lastname」:「Doe」},{「title」:「Jane Lee」,「lastname」:「Lee」},{「title」:「Dan McMan」,「lastname 「:」McMan「},{」title「:」Yu Win「,」lastname「:」Win「}] – digitalextremist

+0

哪裏有'in'運算符? – scapegoat17

+2

不應該先將字符串解析爲對象嗎?看到這個:http://stackoverflow.com/questions/4935632/how-to-parse-json-in-javascript – SOReader

回答

4

content是一個字符串,而不是一個對象數組。

您首先需要將它作爲一個數組存儲,所以擺脫單引號。

var content = [{"title":"John Apple","lastname":"Apple"}, 
{"title":"Kumar Patel","lastname":"Patel"}, 
{"title":"Michaela Quinn","lastname":"Quinn"}, 
{"title":"Peyton Manning","lastname":"Manning"}, 
{"title":"John Doe","lastname":"Doe"}, 
{"title":"Jane Lee","lastname":"Lee"}, 
{"title":"Dan McMan","lastname":"McMan"}, 
{"title":"Yu Win","lastname":"Win"}]; 

除非有理由把它作爲字符串存儲嗎?那麼你需要parse吧。

var content_object = JSON.parse(content); 

然後你可以運行你的代碼。不過,我認爲你想要「stringify」你的JSON。如果是這種情況,您還需要將tl對換,因爲l是對象。最後,你想要append,而不是appendTo。後者將主題附加到您指定的目標上,而不是相反方向(因此,在您的情況下,appendTo#view-content附加到您構建的div上,這不起作用)。

$.each(content, function(t, l){ 
    $('#view-content').append('<div id = "' + t + '">' + JSON.stringify(l) + '</div>'); 
}); 

JSFiddle

最後的評論,我會用document fragments建立您的列表,而不是追加新的div到現有的在每個循環 - 這可以提高性能。

OP編輯後:

改變最後片段到:

$.each(content, function(t, l){ 
    $('#view-content').append('<div id = "' + l.lastname + '">' + l.title + '</div>'); 
}); 

Updated JSFiddle

+0

不要忘了,如果您需要更廣泛的瀏覽器支持,並非所有IE瀏覽器和其他瀏覽器的舊版本都實現JS1.7,那麼您可能需要從github https://github.com獲取Douglas Crockford提供的JSON2庫/ douglascrockford/JSON-js – itanex

+0

正確的,'parse()'和'stringify()'都需要'填充'。 – MMM

+0

請參閱我上面的修改。我現在意識到,我沒有真正提供我需要解決的問題。這是一個漫長的一天:) – scapegoat17

0

試試這個:

var content = [{"title":"John Apple","lastname":"Apple"}, 
{"title":"Kumar Patel","lastname":"Patel"}, 
{"title":"Michaela Quinn","lastname":"Quinn"}, 
{"title":"Peyton Manning","lastname":"Manning"}, 
{"title":"John Doe","lastname":"Doe"}, 
{"title":"Jane Lee","lastname":"Lee"}, 
{"title":"Dan McMan","lastname":"McMan"}, 
{"title":"Yu Win","lastname":"Win"}]; 

$.each(content, function(t, l){ 

$('<div/>',{ 
    id: l, 
    text:t }).appendTo('#view-content'); 

}); 

DEMO

+0

請參閱我上面的編輯。我現在意識到,我沒有真正提供我需要解決的問題。這是一個漫長的一天:) – scapegoat17

+0

在你的情況改變appendTo只是追加。 –