Javascript 在范围之外使用从Ajax调用的变量
我需要从jQueryAjax调用中获得返回的帮助,我不能将变量传递到范围之外。 我在一个带有计时器的数组上有一系列图像,最后一个图像是从ajax调用传递的变量 日志:获取404(未找到) 谢谢Javascript 在范围之外使用从Ajax调用的变量,javascript,html,ajax,instagram-api,Javascript,Html,Ajax,Instagram Api,我需要从jQueryAjax调用中获得返回的帮助,我不能将变量传递到范围之外。 我在一个带有计时器的数组上有一系列图像,最后一个图像是从ajax调用传递的变量 日志:获取404(未找到) 谢谢 $(document).ready(function() { // slideshow var preload = []; var i; var curr
$(document).ready(function() {
// slideshow
var preload = [];
var i;
var current = 0;
var slideshowInterval;
var instagramInterval;
var image;
// instagram
var settings = {
hashtags: "foo",
client_id: "", // instagram API key
images_to_fetch: 1, // fetch 1 images every request to instagram
}
function instagram() {
$.ajax({
dataType: "jsonp",
url: "https://api.instagram.com/v1/tags/" + settings.hashtags + "/media/recent",
data: {
access_token: null,
client_id: settings.client_id,
count: settings.images_to_fetch
},
success: data
});
}
function data(response) {
photos = response.data;
console.log("Number of pictures fetched: " + photos.length);
for(var i = 0; i < photos.length; i++) {
photo = photos[i];
image = photo.images.standard_resolution.url; // get photo url
}
console.log("new instagram image ======> : " + image);
} // data response
var path = [ // relative paths of images
'images/cat.jpg',
'images/fox.jpg',
'images/dog.jpg',
image // passed variable from ajax
];
//preload images
for(i = 0; i < path.length; i++) {
preload[i] = new Image();
preload[i].src = path[i] + "?";
}
function slideshow() {
var slideshow = $("#slideshow");
slideshow.fadeTo('fast', 0, function() {
slideshow.css({
'background': 'url(' + preload[current++ % preload.length].src + new Date().getDate() + ')'
});
}).fadeTo('fast', 1);
}
setInterval(instagram, 15000);
setInterval(slideshow, 15000);
});
$(文档).ready(函数(){
//幻灯片放映
var预载=[];
var i;
无功电流=0;
var幻灯片放映间隔;
var instagramInterval;
var图像;
//instagram
变量设置={
标签:“foo”,
客户端id:,//instagram API密钥
images\u to\u fetch:1,//每次请求instagram时都会获取1张图像
}
函数instagram(){
$.ajax({
数据类型:“jsonp”,
url:“https://api.instagram.com/v1/tags/“+settings.hashtags+”/media/recent”,
数据:{
访问令牌:null,
客户端id:settings.client\u id,
计数:settings.images\u到\u获取
},
成功:数据
});
}
功能数据(响应){
照片=响应数据;
log(“获取的图片数:+photos.length”);
对于(var i=0;i:”+图像);
}//数据响应
var path=[//图像的相对路径
'images/cat.jpg',
'images/fox.jpg',
'images/dog.jpg',
image//从ajax传递的变量
];
//预加载图像
对于(i=0;i
您不应该使用$(“#图像包装器”).attr('instagram-data',image)代码>。如果要将任意数据附加到元素,请使用$('…').data('instagram',image)
。你不能发明属性名。如果您试图使用数据属性,则它们具有data-
前缀,而不是-data
后缀。这将是data instagram
。好的,我删除这一行,删除关于请求的任何建议。我认为您假设变量image
和数组path
之间存在永久连接,但这不是javascript的工作方式。相反,每次AJAX调用返回时,您都需要手动更新preload
数组。是的,您是对的。我在想如何做到这一点,所以在这张幻灯片中,除了更改每个请求之外,唯一的图像是来自Instagram。至于你的基本问题,你不能从传递给异步服务的回调返回值。