function getData() {
var photo,
comment,
url;
$.getJSON('http://url.info/verify/settings.php', function (data) {
photo = data.photoMSG;
comment = data.commentMSG;
url = data.photoURL
});
console.log(photo); //undefined
console.log(comment); //undefined
console.log(url); //undefined
}
我在控制台日志中未定义所有这些...如何在getJOSN块之外看到这3个变量?我知道这已被问过x100次,我试过windiw.varName,但仍然是同样的事情。
答案 0 :(得分:1)
这不是范围问题,而是异步问题。 getJSON
处理程序中的所有内容都是异步的 - 因此console.log
调用通常会在变量分配后发生。请改为使用异步回调:
$.getJSON('http://url.info/verify/settings.php', function (data) {
photo = data.photoMSG;
comment = data.commentMSG;
url = data.photoURL;
callback(photo, comment, url);
});
function(photo, comment, url) {
console.log(photo); //undefined
console.log(comment); //undefined
console.log(url); //undefined
}
答案 1 :(得分:0)
因为$.getJSON
正在进行ajax调用,但之后的代码在调用getJSON
内的回调之前被调用。因此,变量仍未定义。异步行为的典型“问题”。