的Javascript变量的范围:从回调函数提取变量
问题描述:
这是一些基本的变量的作用域的问题,但我不明白如何从一个异步回调函数“提取”变量:的Javascript变量的范围:从回调函数提取变量
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>
<body>
<div id="container"></div>
<script>
var API_KEY = "***";
var USERNAME = "***";
var res;
$(
start()
);
function start(){
$.getJSON(
"https://www.googleapis.com/youtube/v3/channels",
{"part": "contentDetails", "forUsername": USERNAME, "key": API_KEY},
function(data){
alert("Success");
var s = "";
s = data.items[0].contentDetails.relatedPlaylists.uploads;
$("#container").html(s);
var res = s;
}
);
};
</script>
</body>
</html>
我有此代码获取关于Youtube频道的信息,并且我尝试将“s”放入作为全局变量的“res”中,但它不起作用。有没有办法做到这一点?
(此外,如果有人知道更好的方法来提取通过的getJSON返回的响应对象数据,这将是一个更好的主意,但我不明白这一点要么...)
感谢
答
更新如下code.remove var res from side success function。详细了解JavaScript变量范围HERE
function start(){
$.getJSON(
"https://www.googleapis.com/youtube/v3/channels",
{"part": "contentDetails", "forUsername": USERNAME, "key": API_KEY},
function(data){
alert("Success");
var s = "";
s = data.items[0].contentDetails.relatedPlaylists.uploads;
$("#container").html(s);
res = s;
}
);
};
+0
请评论为什么反对投票? – 2015-03-19 10:17:33
'解析度= S;'从sucess回调方法 – Satpal 2015-03-19 10:14:04
同时删除'var',仅供参考,'$(开始());'立即执行的开始的功能要调用它与'()'(不是$(document).ready()的目标) – Hacketo 2015-03-19 10:16:12
糟糕,不知道“var”在这里做什么。反正它不起作用。 :/ 如果我删除它并尝试console.log(res);在启动函数结束时,它打印“未定义”。 – user3360437 2015-03-19 10:25:50