我获得了这样的JSON。我想获取一个元素tActivitats并复制到一个数组中:
[
{
"identificador": "A462D996C3DDF4C94A3BF1A23EBF2906",
"num_grup": 1,
"activitats": "1",
"tActivitats": [
{
"mostrIdioma": "S",
"calendariWeb": "S",
"nomActiv": "Visita Museu",
"codiActiv": "1",
"tipus": "S",
"idioma": "0"
}
]
}
]
对于json的每个元素:
var tActivitatsArray = new Array();
$.post('../ServletJson', {
elem: 'accesWeb',
sessionId: "<%=sessionActual%>"
}, function(data) {
$.each(data, function(t, elem) {
//dostuff
tActivitatsArray = elem.tActivitats;
//dostuff
});
});
然后我有一个函数,在该函数中传递elem tActviitatsArray并尝试进行迭代,但出现错误无法读取未定义的属性'length'
for (var i = 0; i < tActivitatsArray.length; i++) {
console.log("test" + tActivitatsArray[i].nomActiv);
}
console.log(JSON.stringify(data));
多数民众赞成在console.log(JSON.stringify(data));结果:
[
{
"identificador":"1AE2886120F41BBC0F76567993EF76E0",
"num_grup":1,
"activitats":"1",
"horari":"sessio_1_13_1200_0_1345",
"total":8.5,
"num_pers":"3",
"tarifa":"tarifa_1_3_1",
"preu":"8.5#1~0#1",
"butaques":null,
"nomSala":"",
"numerada":"false",
"promo":"",
"referencia":"100249790",
"dataVisita":"22/05/2020",
"combinada":"",
"article":null,
"precioTemp":[
{
"codActiv":"1",
"codTarifa":"1",
"precio":"8.50",
"dtePromo":"0",
"dteEuro":"%",
"total":25.5,
"tipus":"normal"
}
],
"tActivitats":[
{
"mostrIdioma":"S",
"calendariWeb":"S",
"nomActiv":"Visita Museu",
"codiActiv":"1",
"tipus":"S",
"idioma":"0"
}
],
"tTarifa":[
{
"codTarifa":"1",
"nomTarifa":"General"
},
{
"codTarifa":"1",
"nomTarifa":"General"
}
]
},
{
"identificador":"1AE2886120F41BBC0F76567993EF76E0",
"num_grup":2,
"activitats":"1",
"horari":"sessio_1_1_1000_0_1059",
"total":8.5,
"num_pers":"3",
"tarifa":"tarifa_1_3_1",
"preu":"8.5#1~0#1",
"butaques":null,
"nomSala":"",
"numerada":"false",
"promo":"",
"referencia":"100249790",
"dataVisita":"23/05/2020",
"combinada":"",
"article":null,
"precioTemp":[
{
"codActiv":"1",
"codTarifa":"1",
"precio":"8.50",
"dtePromo":"0",
"dteEuro":"%",
"total":25.5,
"tipus":"normal"
}
],
"tActivitats":[
{
"mostrIdioma":"S",
"calendariWeb":"S",
"nomActiv":"Visita Museu",
"codiActiv":"1",
"tipus":"S",
"idioma":"0"
}
],
"tTarifa":[
{
"codTarifa":"1",
"nomTarifa":"General"
},
{
"codTarifa":"1",
"nomTarifa":"General"
}
]
}
]
答案 0 :(得分:0)
三件事;
在迭代之前检查tActivitatsArray
是否已定义。
在值初始化之后进行迭代。
确保tActivitats
数组不是undefined
的响应。
答案 1 :(得分:0)
看起来后端是一台ASP.NET服务器。我可以通过<%=sessionActual%>
来分辨。
在这种情况下,成功的$.post
函数将接收一个json对象data
,该对象包含一个子元素d
,该子元素保存着服务器请求的资源。
更改此行:
$.each(data,function(t,elem) {
...
}
进入:
$.each( data.d ,function(t,elem){
...
}
答案 2 :(得分:0)
好吧...逻辑上说,如果正在接收数据并将其正确转换为数组,它应该可以工作:
select *
from OPC_SourceTags opc
where not exists (
select rt.Source_Tag_Id_Fk
from Real_Raw_Points rt
where opc.Source_Tag_Id = rt.Source_Tag_id_Fk
)
var a = [
{
"mostrIdioma": "S",
"calendariWeb": "S",
"nomActiv": "Visita Museu",
"codiActiv": "1",
"tipus": "S",
"idioma": "0"
}
];
for (var i = 0; i < a.length; i++) {
console.log("test: " + a[i].nomActiv);
}
您可以在回调中记录test: Visita Museu
的输出吗?
顺便说一句,您正在JSON.stringify(data)
循环中覆盖tActivitatsArray。您应该推送/合并而不是覆盖值。我认为这是您的主意,对吧?