Javascript jQuery循环JSON问题
我尝试了一些组合,但我被卡住了。感谢您的帮助。我如何读取这里的JSON记录(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
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);
}
}