2 qyanxiaoyou Qyanxiaoyou 于 2017.09.09 10:52 提问

如何创建对象数组(数组由多个对象组成),并能获取内容

$.ajax({
url :……,
dataType:'json',
type:'get',
contentType:"application/json;charset=utf-8",
data:{},
success:function(msg){
console.log(msg.data);
var ary=new Array();
var obj=new Object();
for(var i=0;i<msg.data.length;i++){
$.ajax({
url :……,
dataType:'json',
type:'get',
contentType:"application/json;charset=utf-8",
data:{
id:msg.data[i].id
},
success:function(msg){
if(msg.data.length!=0){
var obj=msg.data[0].student;
ary.push(obj);
}
},
error:function(e){
}
});
}
console.log(ary);
console.log(ary.length); //0 ???
console.log(ary[0]); //undefined ???
},
error:function(e){
}
});
图片说明
从后台获取到的(如图一),但是自己创建的数组却获取不到长度和具体的内容(如图二),为什么???
图片说明
不然该怎么创建对象数组呢?
拜托各位大神帮忙~~~

5个回答

Small_Mouse0
Small_Mouse0   Ds   Rxr 2017.09.09 11:19

前端代码一样,,后端代码不一样,,,一个可以获取,,一个不能获取???

看看你的后台代码,,

qq_30101879
qq_30101879   2017.09.09 11:24

主要的问题在于你发送两次ajax请求,对获取到的数据进行过滤,没必要多次请求ajax

cooldream2016
cooldream2016   2017.09.09 12:16

ajax是异步的,嵌套的话不能保证外层的ajax执行完之后在执行内层的ajax,所以会导致错误。你可以把ajax改为同步试试,或者不用两个ajax。

qq_33727653
qq_33727653   2017.09.09 12:19

楼主不知ajax是异步的? 在你的ajax还没有全执行完的时候,你的console.log(ary)可能就已经执行了!!!!还有就是这代码逻辑。。。。我认为是不行的!!!
为啥非要ajax套ajax,一个ajax不能获得所有数据? 再退异步两个ajax不能获得所有数据?

longlong3207
longlong3207   2017.09.09 12:21

你直接在外面的ajax中返回对象,直接放数组不就行了嘛,为什么还要遍历再进行ajax呢,完全没必要

Csdn user default icon
上传中...
上传图片
插入图片