0

我正在尝试运行一个搜索外部 JSON 文件的 jQuery/Javascript 函数,true如果找到给定变量作为 JSON 的用户名之一,则返回。

这就是我所拥有的:(给定的变量player等于a

function loggedIn(player) {
    var result = false;
    var liurl = "liplay.json";
    $.getJSON(liurl, function (json) {
        $.each(json, function (key, value) {
            if (value.username == player) {
                alert();
                result = true;
            } else {}
        });
    });
    return result;
}

外部 JSON 文件 (liplay.json) 如下所示:

[{"username":"a"},{"username":"q"}]

出于某种原因,代码总是返回 false。

我尝试一次运行它,但我发现无论出于何种原因,Chrome 都会运行前几行代码 until $.getJSON(liurl, function(json){,然后跳过 until return result;。我不知道为什么它会跳过运行 if/else 语句的部分。关于为什么会发生这种情况以及如何解决它的任何想法?

4

2 回答 2

0

$.getJSON 调用在回调中执行您的函数,因此您无法返回结果,因为它会脱离调用并跳转到 return 语句。一旦 JSON 调用完成加载,您将不得不重构事物以便使用回调

于 2012-04-04T01:52:58.937 回答
0

$.getJSON 是一个异步方法——传入它的函数回调是在异步方法执行完成后执行的,但在那之前,主函数的其余部分会继续执行,并且不可避免地返回 false。

于 2012-04-04T01:57:11.180 回答