Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 访问$.getJSON()之外的json数据_Jquery_Asp.net_Json - Fatal编程技术网

Jquery 访问$.getJSON()之外的json数据

Jquery 访问$.getJSON()之外的json数据,jquery,asp.net,json,Jquery,Asp.net,Json,我试图通过调用getAuthorName方法访问fullname变量,但无法获得正确的值。它总是给我一个值“default”。您不会从异步方法返回,正如您所看到的,它不起作用!您需要的是回调函数,请考虑: $(document).ready(function () { var value = getParmsVals()["search"]; $.getJSON('/api/search/GetQuestionByKey/' + value, function (jsonData

我试图通过调用getAuthorName方法访问fullname变量,但无法获得正确的值。它总是给我一个值“default”。

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

$(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;
}
注意我们如何传入
回调
,然后在get调用结束时调用它?现在这样调用此方法:

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

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

我喜欢@tymeJV的答案,这是一个解决问题的简单方法

我只是想指出,解决Javascript中易于访问的数据这一大问题是以数据为中心的JS框架存在的一个重要原因


您还可以将变量放在对象上并使用
.bind()
,如下所示:

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

您是否收到任何控制台错误?能否向我们显示您的jsonData输出。可能重复的
$。getJSON
是异步的。在
$之前返回
fullname
。getJSON
收到响应。他不能同时设置
async:false
?不管怎样,我都更喜欢你的答案。@MagicMan——将async设置为false从来都不是一个好主意,如果该服务关闭,该调用将挂起,锁定用户。用户讨厌这样@MagicMan您永远不应该将async:false设置为“始终有更好的方法”。@b1tsh1ft除非您在onbeforeunload中,或者您不想阻止的锚定标记单击,或者您不想阻止的表单提交。有很多用例使用它不是一个坏主意,但这不是其中之一。@tymeJV感谢您的回答。。所以,如果我必须多次使用$.getJSON()方法,有没有更好的方法来调用它?除了在不同的函数中调用它之外??
this.fullname = "default";

$.getJSON('/api/search/GetUserById/' + userId, function (jsonData) {
   this.fullname = jsonData.firstname + " " + jsonData.lastname;
}.bind(this));