Jquery / Javascript跳过线?

时间:2012-04-04 01:41:25

标签: javascript jquery json boolean

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

这就是我所拥有的: (给定变量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运行前几行代码直到$.getJSON(liurl, function(json){,然后跳过return result;。我不知道为什么它会跳过运行if / else语句的部分。关于为什么会发生这种情况以及如何解决问题的任何想法?

2 个答案:

答案 0 :(得分:0)

$ .getJSON调用在回调中执行您的函数,因此您无法返回结果,因为它会旋转调用并跳转到return语句。一旦JSON调用加载完

,您将不得不重构内容以便使用回调

答案 1 :(得分:0)

$ .getJSON是一个异步方法 - 传递给它的函数回调是异步方法执行完毕后执行的,但在此之前,main函数的其余部分继续执行,并且不可避免地返回false。