Javascript JSON对象不会使用ajax传输到js数组中
我尝试console.log时未定义它Javascript JSON对象不会使用ajax传输到js数组中,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我尝试console.log时未定义它 var farr = []; $.ajax({ url: "https://whispering-cliffs-33347.herokuapp.com/employees", type: "GET", contentType: "application/jsonp" }).done(function(employees) { for(let i in employees){ farr.push(employe
var farr = [];
$.ajax({
url: "https://whispering-cliffs-33347.herokuapp.com/employees",
type: "GET",
contentType: "application/jsonp"
}).done(function(employees) {
for(let i in employees){
farr.push(employees[i]);
}
})
console.log(farr[8]);
有什么想法吗?console.logfarr[8];将在响应可用之前执行。因此,在first done中,推送本地数组中的所有元素&在下一个done日志中完成后,推送值
var farr = [];
$.ajax({
url: "https://whispering-cliffs-33347.herokuapp.com/employees",
type: "GET",
contentType: "application/jsonp"
}).done(function(employees) {
employees.forEach(function(item){
farr.push(item)
})
}).done(function(elem){
console.log(farr[8]);
})
不能使用标准for循环迭代对象。要做到这一点,您应该首先获取数组中的对象键,并对其进行迭代
const keys = Object.keys(employees);
keys.forEach((i) => {
farr.push(employees[i]);
}
console.log(farr[8]);. // You should put this in the call back itself
或者您可以使用lodash的forEach直接迭代对象。First console employees。知道它是数组还是对象。如果是数组,则可能需要解析JSON。并在.done函数中使用console。将console.log调用移动到.done回调中。请记住,$.ajax是异步的,您在回调中设置的任何返回值或变量都将在回调之外未定义。just use async:falseNo可能与just use async:false重复,请勿使用async:false。它被弃用了,它很懒惰,编程实践也很糟糕。