[英]accessing nested json (prepared by gson) using jquery inside a map
我有一個像這樣的java對象,它具有幾個對象字段,其中包含基本字段,這是一個示例:
Template {
String name;
EmailMessage defaultEmailMessage;
}
EmailMessage {
String emailSubject;
String emailBody;
}
我有一個spring控制器方法,該方法使用gson返回json格式的模板列表。
在我的jsp中,我使用jquery ajax調用來獲取此列表,然后基於該列表填充一些html內容,這是一個簡化的版本:
$.ajax({
type : "GET",
url : '<c:url value="/listTemplates.htm"/>',
dataType: 'json',
success : function(templates) {
var map = $.map(templates, function(template) {
return {
"name": template.name,
"emailSubject": template.defaultEmailMessage.emailSubject
};});
$("#thumbnails-ul").html($("#campaignThumbTmpl").tmpl(map));
},
error : function(data) {
alert(data.responseText);
}
});
在firebug中,我看到一個undefined template.defaultEmailMessage
錯誤,但是在調試時,我可以同時撤消template.defaultEmailMessage
和template.defaultEmailMessage.emailSubject
。 我嘗試使用$.each
但同樣的問題。 如何訪問嵌套的json? 如果您想在瀏覽器中查看json的完整輸出,請告訴我。
用"emailSubject": template.defaultEmailMessage.emailSubject
替換您的"emailSubject": template.defaultEmailMessage.emailSubject
"emailSubject": template.defaultEmailMessage
稍后添加:為什么要再次將數據轉換為json? 您要求將數據作為json,然后再次將json數據返回到模板中進行編譯,然后將數據直接放入模板中。
$.ajax({
type:"GET",
url:"<c:url value="/listTemplates.htm"/>",
datatype:"application/json",
success:function(templates){
$.get("Put Your Template URL HERE",function(template}
var result = _.template(template); $("#thumbnails-ul").html($("#campaignThumbTmpl").tmpl(templates));
});
}
});
這樣,您就可以通過.each
循環訪問數據,將數據放置在模板中的任何位置,如下所示:
<% _.each(data,function(anynamehere){ %>
<li><a href="<%= anynamehere.name %>"></li>
<% }); %>
上面是一個從類中打印您的名字的示例,但是通過其他.each循環,您也可以放置其他屬性....希望這可以幫助...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.