2015-03-19 288 views
2

这是一些基本的变量的作用域的问题,但我不明白如何从一个异步回调函数“提取”变量:的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返回的响应对象数据,这将是一个更好的主意,但我不明白这一点要么...)

感谢

+0

'解析度= S;'从sucess回调方法 – Satpal 2015-03-19 10:14:04

+0

同时删除'var',仅供参考,'$(开始());'立即执行的开始的功能要调用它与'()'(不是$(document).ready()的目标) – Hacketo 2015-03-19 10:16:12

+0

糟糕,不知道“var”在这里做什么。反正它不起作用。 :/ 如果我删除它并尝试console.log(res);在启动函数结束时,它打印“未定义”。 – user3360437 2015-03-19 10:25:50

回答

-1

更新如下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