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

标签 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的值?

最佳答案

在这种情况下,您不能这样做,原因有两个。

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

第二个更难处理,异步 JavaScript 和 XML 是异步getJSON方法设置下载正在进行,但脚本随后继续运行。 console.log 之前到达线路baz已被赋值。

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

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

关于javascript - 如何从函数内部获取 JavaScript 变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3517086/

相关文章:

javascript - 使用我的 "DragEnter"和 "Dreagleave"函数在 Firefox 浏览器上进行 Knockout.js 拖放操作时出现问题

javascript - Levenshtein 阵列测距

java - 使用 Gson 反序列化通用集合

javascript - 使用map方法在React Native中显示对象数组

javascript - 使用扩展运算符克隆数组并添加内联

javascript - Gulp 4 sass 忘记发出异步完成信号

javascript - 根据选项选择问题更改元素值

c# - 网络错误: 405 Method Not Allowed in WCF

javascript - 当用户点击下一页时,不确定如何动态检查所有位于一页的单选按钮

c# - 反序列化 JSON 响应时,RestSharp 客户端将所有属性返回为 null