Javascript each()只打印来自外部Json的最后一项

Javascript each()只打印来自外部Json的最后一项,javascript,jquery,json,Javascript,Jquery,Json,我正在尝试使用jQuery进行测试,并从外部Json文件中提取问题和答案 我的问题是我的foreach循环只打印出Json项中的最后一个元素 这是我的Jquery: function postData(data) { var html = ""; $.each(data, function(key, value) { html += "<ul><h3><span>" + key + "</span></h3>";

我正在尝试使用jQuery进行测试,并从外部Json文件中提取问题和答案

我的问题是我的foreach循环只打印出Json项中的最后一个元素

这是我的Jquery:

function postData(data) {
var html = "";

$.each(data, function(key, value) {

        html += "<ul><h3><span>" + key + "</span></h3>";

        $.each(value.answers, function(i, j){
            html += "<li>" + j.answer + "</li>";
        });

        html += "</ul>";

});

$('#content').append(html);

};
然而,我得到的唯一答案是:

Question title
- answer 4

Question title two
- False
我只是在奇怪地循环它们,还是我没有正确地打印对象


如果你需要我澄清什么,请告诉我。谢谢。

您的JSON存在缺陷,同一对象中存在重复的属性名。与此相反:

        [{
        "answer" : "answer one",
        "answer" : "answer two",
        "answer" : "answer three",
        "answer" : "answer four"
        }]
如果每个应答属性都位于其自己的对象中,则需要这样做:

        [
        {"answer" : "answer one"},
        {"answer" : "answer two"},
        {"answer" : "answer three"},
        {"answer" : "answer four"}
        ]
正如您所看到的,您在同一个对象中有重复的属性名称,这只会给出最后一个属性的结果,实际上在严格模式下是一个错误(使用严格模式的另一个原因),因为解释器会为您标记此错误

工作演示:


您可能还应该修复HTML,因为
    )的有效子对象很少,而且
    不是合法的子对象。您可以将
    放在
    前面,如下所示:

    html += "<h3><span>" + key + "</span></h3><ul>";
    
    html+=“”+key+“
      ”;
    您的JSON存在缺陷,同一对象中存在重复的属性名。与此相反:

            [{
            "answer" : "answer one",
            "answer" : "answer two",
            "answer" : "answer three",
            "answer" : "answer four"
            }]
    
    如果每个应答属性都位于其自己的对象中,则需要这样做:

            [
            {"answer" : "answer one"},
            {"answer" : "answer two"},
            {"answer" : "answer three"},
            {"answer" : "answer four"}
            ]
    
    正如您所看到的,您在同一个对象中有重复的属性名称,这只会给出最后一个属性的结果,实际上在严格模式下是一个错误(使用严格模式的另一个原因),因为解释器会为您标记此错误

    工作演示:


    您可能还应该修复HTML,因为
    )的有效子对象很少,而且
    不是合法的子对象。您可以将
    放在
    前面,如下所示:

    html += "<h3><span>" + key + "</span></h3><ul>";
    
    html+=“”+key+“
      ”;
    更改了answers对象中的键名称

    {
    "Question Title":
        {
          "answers":
                [{
                "answer1" : "answer one",
                "answer2" : "answer two",
                "answer3" : "answer three",
                "answer4" : "answer four"
                }]
        },
    
    "Question title two":
        {
          "answers":
                [{
                "answer1" : "True",
                "answer2" : "False"
                }]
        }
     };
    

    更改了answers对象中的键名称

    {
    "Question Title":
        {
          "answers":
                [{
                "answer1" : "answer one",
                "answer2" : "answer two",
                "answer3" : "answer three",
                "answer4" : "answer four"
                }]
        },
    
    "Question title two":
        {
          "answers":
                [{
                "answer1" : "True",
                "answer2" : "False"
                }]
        }
     };
    

    html无效,
    h3
    不能是
    ul
    html无效,
    h3
    不能是
    ul
    的孩子哦,我明白你的意思了。多谢各位@user3113376-看看我在最后添加的建议,让你的HTML合法化。哦,我明白你的意思了。多谢各位@user3113376-查看我在最后添加的建议,使您的HTML也合法。