$.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){
}
});
从后台获取到的(如图一),但是自己创建的数组却获取不到长度和具体的内容(如图二),为什么???
不然该怎么创建对象数组呢?
拜托各位大神帮忙~~~
前端代码一样,,后端代码不一样,,,一个可以获取,,一个不能获取???
看看你的后台代码,,
主要的问题在于你发送两次ajax请求,对获取到的数据进行过滤,没必要多次请求ajax
ajax是异步的,嵌套的话不能保证外层的ajax执行完之后在执行内层的ajax,所以会导致错误。你可以把ajax改为同步试试,或者不用两个ajax。
楼主不知ajax是异步的? 在你的ajax还没有全执行完的时候,你的console.log(ary)可能就已经执行了!!!!还有就是这代码逻辑。。。。我认为是不行的!!!
为啥非要ajax套ajax,一个ajax不能获得所有数据? 再退异步两个ajax不能获得所有数据?
你直接在外面的ajax中返回对象,直接放数组不就行了嘛,为什么还要遍历再进行ajax呢,完全没必要