0

我有一个类似的 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);
    }
});

在萤火虫中,我看到一个错误undefined template.defaultEmailMessage,但是当我调试时,我可以同时评估template.defaultEmailMessagetemplate.defaultEmailMessage.emailSubject. 我尝试使用$.each但同样的问题。如何访问嵌套的 json?如果您想在浏览器中查看 json 的完整输出,请告诉我。

4

1 回答 1

1

替换你 "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 循环,您也可以放置其他属性....希望这会有所帮助...

于 2012-12-12T15:26:24.497 回答