Javascript jQuery循环JSON问题

Javascript jQuery循环JSON问题,javascript,jquery,json,Javascript,Jquery,Json,我尝试了一些组合,但我被卡住了。感谢您的帮助。我如何读取这里的JSON记录(JSON的语法组织得好吗?)我一直得到TypeError:无法读取未定义的属性“0”,其代码如下和或排列 JSON: 代码: 功能加载wtyupgplans(wty){ var WtyRow=“”; var WtyYears=''; 对于(var i=0;iwty.wty_upgrade.length您应该重新考虑迭代JSON的方式。 假设您在数据变量中定义JSON,如下所示: var data = {"wty_upgr

我尝试了一些组合,但我被卡住了。感谢您的帮助。我如何读取这里的JSON记录(JSON的语法组织得好吗?)我一直得到
TypeError:无法读取未定义的属性“0”,其代码如下和或排列

JSON:

代码:

功能加载wtyupgplans(wty){
var WtyRow=“”;
var WtyYears='';
对于(var i=0;i
wty错误。wty\U升级**[0]**.length.==>wty.wty_upgrade.length

您应该重新考虑迭代JSON的方式。 假设您在数据变量中定义JSON,如下所示:

var data = {"wty_upgrade":[{"wty":"Upgrade from 3 to 5 years", "mth":24, "pig":3000}, {"wty":"Upgrade from 3 to 10 years", "mth":84, "pig":8000}]}
然后,您可以使用JQuery在wty_升级阵列中迭代,如下所示:

 $.each(data.wty_upgrade, function(){

         //EDIT:
         wtyYears = this.mth / 12; //this is the current array entry - first time: {"wty":"Upgrade from 3 to 5 years", "mth":24, "pig":3000}


        WtyRow +='<tr> \
                    <td> \
                        <input type="hidden" class="smg-wty-up-val" value="' + this.mth + '"> \
                        ' +this.mth + ' \
                    </td> \
                    <td align="right">' + wtyYears + '</td> \
                    <td align="right">' + this.pig + '</td> \
                </tr>';
        $("#myTable").append(WtyRow); //you also need to append your row to a table or you'll never see it

    });
$。每个(data.wty\u升级,函数(){
//编辑:
wtyYears=this.mth/12;//这是当前数组项-第一次:{“wty”:“从3年升级到5年”,“mth”:24,“pig”:3000}
WtyRow+='\
\
\
“+this.mth+”\
\
“+wtyYears+”\
“+this.pig+”\
';
$(“#myTable”).append(WtyRow);//您还需要将行追加到表中,否则将永远看不到它
});
编辑:为第二个TD添加缺少的分区


而且,作为一种最佳实践,您不应该将变量大写——还要确保包含var whateverName=以便不创建全局变量

你有几个问题

问题是,您没有在数组中循环,而是在数组的第一个索引中循环。第二,您尝试引用mth和pig的索引。它们不是数组

function LoadWtyUpgPlans(wty) {

    var WtyRow = '';
    var WtyYears = '';
    var upgrades = wty.wty_upgrade;

    for (var i = 0; i < upgrades.length; i++) {
        console.log("wty: ", upgrades[i].wty);
        console.log("mth: ", upgrades[i].mth);
        console.log("pig: ", upgrades[i].pig);
    }

}
功能加载wtyupgplans(wty){
var WtyRow=“”;
var WtyYears='';
var升级=wty.wty\u升级;
对于(变量i=0;i<0.length;i++){
log(“wty:”,升级[i].wty);
console.log(“mth:”,升级[i].mth);
console.log(“pig:”,升级[i].pig);
}
}

如果只对一个元素使用循环,则不需要循环
wty.wty\u升级[0]。长度
从哪里获取javascript对象?它是如何传递到函数中的?执行
console.log(wty)
查看其中的内容-它在哪里失败?我假设它是
wty.wty\u升级[0].mth[0]
这里-试试
wty.wty\u升级[0].mth
@epascarello不知道你的意思-我认为这是一个解决问题的地方?我就如何解决这个问题提出了建议。我的解决方案没有违反我所知道的、旨在有用/有帮助的任何最佳实践。我不是故意要踩你的脚…第二个TD有逻辑,你是从JSON输出一个字符串。AKA,它应该是
wtyyers
,它是
wty/12
 $.each(data.wty_upgrade, function(){

         //EDIT:
         wtyYears = this.mth / 12; //this is the current array entry - first time: {"wty":"Upgrade from 3 to 5 years", "mth":24, "pig":3000}


        WtyRow +='<tr> \
                    <td> \
                        <input type="hidden" class="smg-wty-up-val" value="' + this.mth + '"> \
                        ' +this.mth + ' \
                    </td> \
                    <td align="right">' + wtyYears + '</td> \
                    <td align="right">' + this.pig + '</td> \
                </tr>';
        $("#myTable").append(WtyRow); //you also need to append your row to a table or you'll never see it

    });
function LoadWtyUpgPlans(wty) {

    var WtyRow = '';
    var WtyYears = '';
    var upgrades = wty.wty_upgrade;

    for (var i = 0; i < upgrades.length; i++) {
        console.log("wty: ", upgrades[i].wty);
        console.log("mth: ", upgrades[i].mth);
        console.log("pig: ", upgrades[i].pig);
    }

}