如何从函数内部获取JavaScript变量值?

时间:2010-08-18 22:03:34

标签: javascript jquery json closures getjson

我正在使用JQuery getJSON函数来获取一些JSON格式的数据。

该数据将与YouTube JavaScript API一起使用:http://code.google.com/apis/youtube/js_api_reference.html

JSON数据未从YouTube中提取。这是一个简单的手写的YouTube视频ID和标题列表,列在CSV上。我正在使用PHP来读取CSV并创建一个JSON对象。

问题的根源在于,当我将任何YouTube JavaScript API代码放入“document.ready”中时,YouTube代码神秘地停止工作。

我已经获得了完整的播放器功能(在HTML页面上添加了JSON),但是现在我在尝试外部化数据时遇到了这个障碍(使用$ getJSON)。为了让我的播放器工作,我需要首先使用JQuery代码并在document.ready中。接下来,我需要拥有YouTube播放器代码,它应该在document.ready之外。

这是我尝试获取$ getJSON返回的数据的失败:

$(document).ready(function(){

 $.getJSON('bar.php', function(data) {
     var baz = data;
            return baz;
 }); // getJSON

}) // ready
console.log("baz: " + baz);

如何获取baz的值?

3 个答案:

答案 0 :(得分:1)

在这种情况下,你不能,原因有两个。

第一个可以解决的问题是变量的范围是构成getJSON方法的第二个参数的匿名函数。

第二个,更难处理,是异步JavaScript和XML 异步getJSON方法设置下载,但脚本继续运行。在 console.log分配了值之前,<{1}}行已到达

用JavaScript编写的任何复杂程序都将由事件驱动。当您在运动中设置某些内容(例如Ajax调用)时,您必须通过回调方法处理该结果。

在传递给baz的匿名函数(或从那里调用的另一个函数)中做任何需要做的事。

答案 1 :(得分:0)

为什么不能使用getJSON函数中的返回数据执行您想要的操作?

$(document).ready(function(){
     $.getJSON('bar.php', function(data) {
          // Use data...
          alert("I'm in your function processing your data");
     }); 
});

答案 2 :(得分:0)

jQuery.getJSON是AJAX调用的简写:

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

因此,您必须处理回调中的数据,或者需要在回调中调用数据的任何代码。

$(document).ready(function(){
  $.getJSON('bar.php', function(data) {
    var baz = data;
    console.log(baz);
  }); // getJSON
}) // ready