我正在使用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的值?
答案 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