Это не проблема области действия, это факт, что $.getJSON()
является асинхронным, что означает, что эта часть выполняется после , которую вы вернете:
for (var i in response) {
groups.push(response[i]);
}
Вам необходимо вызывать любую функцию, которой нужны эти данные, в обратном вызове асинхронного запроса, поэтому она запускается, когда данные доступны, например:
$.getJSON('get_groups.php', function(response) {
var groups = [];
for (var i in response) {
groups.push(response[i]);
}
doSomethingThatNeedsGroups(groups);
});
В настоящее время массив групп заполняется, но не тогда, когда вам это нужно. Если у вас абсолютно есть , чтобы вернуть это (я настоятельно рекомендую использовать асинхронную модель так, как она была задумана), вы можете использовать полную версию $.ajax()
и установить async:false
. Опять же ... не идите по этому пути, если это возможно, придерживайтесь вызова любой функции, которая нуждается в данных, как только они станут доступны, так как async: false
заблокирует браузер пользователя.