首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法读取未定义的javascript数组的属性'length‘

无法读取未定义的javascript数组的属性'length‘
EN

Stack Overflow用户
提问于 2020-05-21 16:52:28
回答 3查看 147关注 0票数 0

我得到了一个这样的JSON。我想获取elem tActivitats并复制到一个数组中:

代码语言:javascript
复制
[
  {
    "identificador": "A462D996C3DDF4C94A3BF1A23EBF2906",
    "num_grup": 1,
    "activitats": "1",
    "tActivitats": [
      {
        "mostrIdioma": "S",
        "calendariWeb": "S",
        "nomActiv": "Visita Museu",
        "codiActiv": "1",
        "tipus": "S",
        "idioma": "0"
      }
    ]
  }
]

对于json的每个元素:

代码语言:javascript
复制
var tActivitatsArray = new Array();
$.post('../ServletJson', {
  elem: 'accesWeb',
  sessionId: "<%=sessionActual%>"
}, function(data) {
  $.each(data, function(t, elem) {
    //dostuff
    tActivitatsArray = elem.tActivitats;
    //dostuff
  });
});

然后我有一个函数,在这个函数中我传递了elem长度,然后我尝试迭代,得到的错误是无法读取未定义的属性‘tActviitatsArray’

代码语言:javascript
复制
for (var i = 0; i < tActivitatsArray.length; i++) {
  console.log("test" + tActivitatsArray[i].nomActiv);
}
代码语言:javascript
复制
console.log(JSON.stringify(data));

这就是数据(JSON.stringify(console.log));结果:

代码语言:javascript
复制
[
   {
      "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"
         }
      ]
   }
]
EN

回答 3

Stack Overflow用户

发布于 2020-05-21 16:58:56

三件事;

在值为initialized.

  • Make之后,检查是否在iterate.

  • Iterating之前定义了数组。确保tActivitats tActivitatsArray不是undefined in response。
票数 0
EN

Stack Overflow用户

发布于 2020-05-21 16:59:43

看起来后端是一个ASP.NET服务器。我可以从<%=sessionActual%>看出来。

在这种情况下,$.post成功函数将接收一个json对象data,该对象包含一个保存来自服务器的请求资源的子元素d

更改此行:

代码语言:javascript
复制
$.each(data,function(t,elem) {
...
}

进入:

代码语言:javascript
复制
$.each( data.d ,function(t,elem){ 
   ...
}
票数 0
EN

Stack Overflow用户

发布于 2020-05-21 17:15:49

好吧..。逻辑表明,如果数据被接收并正确转换为数组,则它应该起作用:

代码语言:javascript
复制
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);
}
代码语言:javascript
复制
test: Visita Museu

你能在回调中记录JSON.stringify(data)的输出吗?顺便说一句,您正在覆盖each循环中的tActivitatsArray。您应该推送/合并,而不是覆盖该值。我想这是你的主意,对吧?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61930721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档