Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
Jquery $.ajax getjson数组在函数外部为空_Jquery_Arrays_Ajax - Fatal编程技术网

Jquery $.ajax getjson数组在函数外部为空

Jquery $.ajax getjson数组在函数外部为空,jquery,arrays,ajax,Jquery,Arrays,Ajax,我试图用getjson/ajax命令中的数据填充数组,但由于某种原因,数组在函数外是空的 这是我的代码: $.ajax({ url: instagramUrl, dataType: 'json', async: false, data: access_parameters, success: function(data) { if(data.data.length > 0) { for (var key in

我试图用getjson/ajax命令中的数据填充数组,但由于某种原因,数组在函数外是空的

这是我的代码:

$.ajax({
    url: instagramUrl,
    dataType: 'json',
    async: false,
    data: access_parameters,
    success: function(data) {
        if(data.data.length > 0) {
            for (var key in data.data ){
                photo_container.push(data.data[key]);
                console.log(photo_container); <--- filled array
            }
        }
    }
});
console.log(photo_container); <--- empty array
也不起作用:(


如果有人知道答案,请告诉我!谢谢!

在使用数据之前,您必须等待ajax调用完成:

function retrieveImages() {
    return $.ajax({
        url: instagramUrl,
        dataType: 'json',    
        data: access_parameters
    });
}

$(document).ready(function () {
    var photo_container = [];
    retrieveImages().done(function(data) {
        if(data.data.length > 0) {
            for (var key in data.data ){
                photo_container.push(data.data[key]);
                console.log(photo_container); <--- filled array
            }
        }
        // you can only use the data inside the done() handler,
        // when the call has completed and the data is returned
        console.log(photo_container);
    });        
});
函数检索图像(){
返回$.ajax({
网址:instagramUrl,
数据类型:“json”,
数据:访问参数
});
}
$(文档).ready(函数(){
var photo_container=[];
retrieveImages().done(函数(数据){
如果(data.data.length>0){
for(data.data中的var键){
photo_container.push(data.data[key]);

log(photo_container);photo_container在ajax调用之外是全局的还是可访问的?您在哪里定义
photo_container
array变量?在var photo_container=new array()下面的所有函数的声明的ontop之外;可能的重复不是的完全重复。您的代码似乎应该使用
async:false
,但如果您阅读该问题,它将帮助您理解一种更好的方法,而不使用
async:false
。此代码在我的控制台中的retrieveimages函数外仍然有一个空数组在ajax代码中,console.log仍然位于console.log之前。您只能使用done处理程序中的数据,因为
photo\u容器
数组在
retrieveImages()
函数之外的该点仍然为空;您对
console.log(photo\u容器)的第二次调用
在异步调用后立即发生。记住它是异步的,这意味着它与页面上运行的javascript并行执行。
function retrieveImages() {
    return $.ajax({
        url: instagramUrl,
        dataType: 'json',    
        data: access_parameters
    });
}

$(document).ready(function () {
    var photo_container = [];
    retrieveImages().done(function(data) {
        if(data.data.length > 0) {
            for (var key in data.data ){
                photo_container.push(data.data[key]);
                console.log(photo_container); <--- filled array
            }
        }
        // you can only use the data inside the done() handler,
        // when the call has completed and the data is returned
        console.log(photo_container);
    });        
});