我正在尝试运行搜索外部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语句的部分。关于为什么会发生这种情况以及如何解决问题的任何想法?
答案 0 :(得分:0)
$ .getJSON调用在回调中执行您的函数,因此您无法返回结果,因为它会旋转调用并跳转到return语句。一旦JSON调用加载完
,您将不得不重构内容以便使用回调答案 1 :(得分:0)
$ .getJSON是一个异步方法 - 传递给它的函数回调是异步方法执行完毕后执行的,但在此之前,main函数的其余部分继续执行,并且不可避免地返回false。