jquery - 在 $.getJSON() 之外访问 json 数据

标签 jquery asp.net json

$(document).ready(function () {
    var value = getParmsVals()["search"];
    $.getJSON('/api/search/GetQuestionByKey/' + value, function (jsonData) {
        $(jsonData).each(function (i, item) {
            var name = getAuthorName(item.userId);
        });
    });
});

function getAuthorName(userId) {
    var fullname = "default";
    $.getJSON('/api/search/GetUserById/' + userId, function (jsonData) {
        fullname = jsonData.firstname + " " + jsonData.lastname;
    });
    return fullname;
}

我尝试通过调用 getAuthorName 方法来访问 fullname 变量,但无法获取正确的值。它总是给我“默认”值。

最佳答案

您不会从异步方法返回,如您所见,它不起作用!您需要的是一个回调函数,请考虑:

function getAuthorName(userId, callback) {
    var fullname = "default";
    $.getJSON('/api/search/GetUserById/' + userId, function (jsonData) {
        fullname = jsonData.firstname + " " + jsonData.lastname;
        callback(fullname);
    });
}

请注意我们如何传入callback,然后在 get 调用结束时调用它?现在像这样调用这个方法:

getAuthorName(userID, function(name) {
    console.log(name);
});

现在您可以在该回调函数中访问fullname!

关于jquery - 在 $.getJSON() 之外访问 json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913682/

相关文章:

python - Flask request.get_json() 引发 BadRequest

ajax - 如何在通过 Ajax 发布的 Django 中获取数组

javascript - 重置/取消选中/选择问卷/调查中的用户选择

c# - 如何在C#中根据日期分割字符串数据

c# - 使用 Shell32 获取文件扩展属性时出现异常

javascript - 连接同名的json条目

angularjs - 语法错误 : Unexpected token R in JSON at position 0 at JSON. 解析(<匿名>)

javascript - HTML类和CSS样式表之间的不理解

javascript - 如何判断多个<select>中选择了哪些选项?

javascript - 回发后保持控制背景颜色