gpt4 book ai didi

javascript 变量未定义

转载 作者:行者123 更新时间:2023-11-28 12:04:28 24 4
gpt4 key购买 nike

我正在编写一个小型 Flickr 图像抓取应用程序,我们在自己的服务器上有一个 JSON 代理。下面的函数从给定 id 的照片集中抓取图像。

function getPhotosFromPhotoset(p_id) {
var data;
$.getJSON('/flickr_get_photos', {
photoset_id: p_id
}, function(res) {
data = res;
console.log("res: " + JSON.stringify(data));
if (res.status == 'ok') {
if (res.data.length > 0) {
//nada
} else {
data.status = "error: Photoset has no photos.";
}
} else {
data.status = "An unknown error occurred; please try again.";
}
});
return data; //undefined?!
}

为什么data突然变得未定义?当我在 getJSON 中使用 console.log 时,它是完全有效的。

最佳答案

该函数早在 ajax 请求发出之前就返回了。在回调函数中使用data(您实际上是在回调函数中记录它,保证它可用)。 $.getJSON 接受回调函数并不是为了好玩,而是出于这个原因。

你可以这样做:

function getPhotosFromPhotoset(p_id) {
return $.getJSON('/flickr_get_photos', {
photoset_id: p_id
});
}

getPhotosFromPhotoset(1).then(function(data) {
//Use data here
});

而不是尝试这样做:

var data = getPhotosFromPhotoset(1); //will not work

除非您将请求设置为同步,否则这将不起作用,这会带来更严重的问题。

关于javascript 变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11438342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com