javascript - 获取JSON返回数据

标签 javascript jquery

这是我的代码:

var name;
function getFBName(username) {
    $.getJSON('http://graph.facebook.com/' + username, function (d) {
        name = d.name;
    });
}
getFBName("zuck");
console.log(name);

我几个小时以来一直在挣扎,但我无法获取 getFBName函数返回用户名。

这是 JSON 顺便说一句:

{
   "id": "4",
   "first_name": "Mark",
   "gender": "male",
   "last_name": "Zuckerberg",
   "link": "https://www.facebook.com/zuck",
   "locale": "en_US",
   "name": "Mark Zuckerberg",
   "username": "zuck"
}

最佳答案

正如@jwatts1980所说,这是一个执行顺序的问题。 $.getJSON 将在响应到达客户端之前立即返回,因此当您运行 console.log 时,它仍然会等待。一种可能的解决方案是:

function getFBName(username) {
    $.getJSON('http://graph.facebook.com/' + username, function (d) {
        console.log(d.name);
    });
}
getFBName("zuck");

这将正确记录Mark Zuckerberg。如果您有多种处理输出的方法,那么设置一个回调函数也可能会很有趣:

function getFBName(username, callback) {
    $.getJSON('http://graph.facebook.com/' + username, function (d) {
        callback(d.name);
    });
}

function handleName(name) {
    // Do a lot of things here
    console.log(name);
}

getFBName("zuck", handleName);

关于javascript - 获取JSON返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23143092/

相关文章:

javascript - 仅当表的数量超过 X "tds"时,才使用 JavaScript 将 HTML 添加到表中

jquery镜头变焦完美定位

javascript - 从点击加载变量数据

javascript - 如何访问 json 中的数组元素值

javascript - 如何检查除特殊复选框外的所有复选框?

javascript - 一步定义多个变量?

javascript - Video Track Element 仅在 Google Chrome 上触发加载事件

javascript - 选择选项的基本 html

javascript - 大型 CSS Sprite 是个好主意吗?

javascript - Microsoft Edge : window. 打开仅在第一次尝试时才能正常工作