Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON对象不会使用ajax传输到js数组中_Javascript_Jquery_Json_Ajax - Fatal编程技术网

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

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

我尝试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]);
有什么想法吗?

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。它被弃用了,它很懒惰,编程实践也很糟糕。