jquery – 访问$.getJSON()之外的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);
    });
}

注意我们如何传递回调然后在你的get调用结束时调用它?现在调用这个方法:

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

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

相关文章
相关标签/搜索