JSON对象不会使用ajax传输到js数组中

时间:2018-02-04 05:20:47

标签: 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(employees[i]);
    }
})
console.log(farr[8]);

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

只有在响应可用之前,

console.log(farr[8]);才会被执行。首先在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]);
    })

答案 1 :(得分:0)

您无法使用标准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直接遍历对象。