2010-08-18 68 views
1

我正在使用JQuery getJSON函数来获取一些JSON格式的数据。如何从函数内部获取JavaScript变量值?

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

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

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

我已经得到了完整的播放器的功能(JSON包含在HTML页面中),但现在我面临这个障碍,因为我试图外部化数据(使用$ getJSON)。对于我的播放器来说,我需要首先在document.ready中使用JQuery代码。接下来,我需要拥有YouTube播放器代码,并且它应该在document.ready之外。

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

$(document).ready(function(){ 

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

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

,我怎么把巴兹的价值?

回答

0

为什么不能用getJSON函数中的返回数据做你想做的事?

$(document).ready(function(){ 
    $.getJSON('bar.php', function(data) { 
      // Use data... 
      alert("I'm in your function processing your data"); 
    }); 
}); 
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 
1

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

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

第二个问题比较难处理,那就是Asynchronous JavaScript and XML is Asynchronous。方法getJSON设置下载,但脚本然后继续运行。 console.log行已到达之前baz已被赋值。

用JavaScript编写的任何复杂程序都将由事件驱动。当你设置某些动作时(比如Ajax调用),你必须通过回调方法处理结果。

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

+0

head' - >'desk。 – 2010-08-18 22:13:38

相关问题