javascript - 在 jQuery 中从 JSON 填充 HTML 不起作用

标签 javascript jquery ajax json

我正在尝试从 JSON 文件构建一个简单的菜单。

我已经尝试了好几天来找出正确的逻辑,但现在我迷失了:

逻辑如下:

$.ajax({
        url: 'data.json',
        cache: false,
        data: "",
        dataType: 'json',
        success: function (results) {
          return $.map(results.Menu, function(obj, i) {
            var menuTemplate = '';
            $.each(obj.menuTitle,function(k,l){
              console.log(obj.link);
                    menuTemplate += '<ul>';
                    menuTemplate += '<li>'+obj.menuTitle;
                     menuTemplate += '<div class="menuList">';
                     menuTemplate += '<div class="left">';
                     menuTemplate += '<ul>';
                     menuTemplate += '<li>'+obj.documentTitle[k]+'</li>';
                     menuTemplate += '</ul>';
                     menuTemplate += '</div>';
                     menuTemplate += '<div class="right">';
                     menuTemplate += '<ul class="region">';
                     menuTemplate += '<li><a href="'+obj.link+'">'+obj.link+'</a></li>'
                     menuTemplate += '</ul>';
                     menuTemplate += '</div>';
                     menuTemplate += '</div>';
                    menuTemplate += '</li>';
                    menuTemplate += '</ul>';
            });
            menuTemplate += "";
            return $('#menu2').append(menuTemplate);
          });
        }

    });

JSON:

{
    "Menu":{
        "fruit":{
            "menuTitle":["Fruits"],
            "documentTitle":["Apple, Pear"],
            "link":{
                "uk":["apple_uk.pdf", "pear_uk.pdf"],
                "europe":["apple_eu.pdf", "pear_eu.pdf"],
                "italy":["apple_it.pdf", "pear_it.pdf"],
                "germany":["apple_gr.pdf", "pear_gr.pdf"]
            }
        },
        "salad":{
            "menuTitle":["Salad"],
            "documentTitle":["Tomatoe","Paprika"],
            "link":{
                "uk":["tomatoe_uk.pdf", "paprika_uk.pdf"],
                "europe":["tomatoe_eu.pdf", "paprika_eu.pdf"],
                "italy":["tomatoe_it.pdf", "paprika_it.pdf"],
                "germany":["tomatoe_gr.pdf", "paprika_gr.pdf"]
            }
        }
    }
}

这是PLUNKR

PLUNKR 内部是代码,当由 JSON 填充时,它应该看起来像这样。我只想创建一个模板,但它对我不起作用:(

请帮助我。

提前非常感谢

最佳答案

首先将所有菜单模板字符串构建更改为:

menuTemplate += '<ul>';
menuTemplate += '<li>'+obj.menuTitle;
menuTemplate += '<div class="menuList">';
menuTemplate += '<div class="left">';
menuTemplate += '<ul>';
$.each(obj.documentTitle, function(mainkey, title) {
  menuTemplate += '<li>'+title+'</li>';
});
menuTemplate += '</div>';
menuTemplate += '<div class="left">';
$.each(obj.link, function(region, files) {
  menuTemplate += '<ul class="region">';
    $.each(files, function(key, file) {
      menuTemplate += '<li>'+file+'</li>';
    });
  menuTemplate += '</ul>';
});
menuTemplate += '</div>';
menuTemplate += '</li>';
menuTemplate += '</ul>';

其次,您的数据 json 文件中有错误,请更改此:

"documentTitle":["Apple, Pear"],

对此: "documentTitle":["苹果", "梨"],

关于javascript - 在 jQuery 中从 JSON 填充 HTML 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26842683/

相关文章:

javascript - 将 HTML 添加到联系表单 7 提交电子邮件

javascript - 相同的 JQuery 函数适用于一个链接,不适用于另一个链接

javascript - 在链接前插入复选框?

javascript - 是否可以提供我的 "ajax-divs"URL 参数?

javascript - Jquery 点击事件的 Html 更新

javascript - 为什么使用 Nuxt 和 Vuex 找不到我的 getter 和 actions

php - 性能 text/html 与 application/json

jQuery ajax 工具提示 : where to find a nice plugin?

jquery - 如何使用绝对定位的子项(不是重复项)设置父级 div 的 100% 高度?

JavaScript:如何将附加信息传递到源页面?