Я пытаюсь запустить функцию jQuery/Javascript, которая ищет внешний файл JSON, и возвращает true
, если данная переменная найдена как одно из имен пользователей JSON.JQuery/Javascript Пропуск линий?
Это то, что у меня есть: (Данная переменная 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. Любые идеи о том, почему это происходит и как это исправить?
Не возвращайте результат в функцию loggedIn, просто выполняйте все, что вам нужно, в обратном вызове getJSON. Это происходит потому, что он выполняется асинхронно. –
Я верю, что после того, как вы получите десериализацию JSON, вы можете просто проверить массив без прокрутки через него: return json [player]! = Undefined; –