我正在使用 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的值?
最佳答案
在这种情况下,您不能这样做,原因有两个。
第一个可以解决的问题是,变量的范围是形成 getJSON
的第二个参数的匿名函数。方法。
第二个更难处理,异步 JavaScript 和 XML 是异步。 getJSON
方法设置下载正在进行,但脚本随后继续运行。 console.log
之前到达线路baz
已被赋值。
任何用 JavaScript 编写的复杂程序都将是事件驱动的。当您设置某些内容(例如 Ajax 调用)时,您必须通过回调方法处理其结果。
在传递给 getJSON
的匿名函数中执行需要完成的任何操作(或在从那里调用的另一个函数中)。
关于javascript - 如何从函数内部获取 JavaScript 变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3517086/