Jquery $.ajax getjson数组在函数外部为空
我试图用getjson/ajax命令中的数据填充数组,但由于某种原因,数组在函数外是空的 这是我的代码: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
$.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);
});
});