Из getJSON
документа:
Это сокращенная функция Ajax
AJAX асинхронный (это первый A). Это означает, что результат не возвращается сразу. Если вы хотите что-то сделать с возвращенными данными из getJSON
, вам нужно будет использовать другой параметр, который является функцией успеха. Эта функция срабатывает, когда возвращается ответ на запрос. Вы не можете вернуть этот ответ из вашей функции, так как он еще не поступил, когда ваша функция завершает выполнение.
Если вам абсолютно необходимо заблокировать и дождаться ответа, вы можете использовать $.ajax
вместо getJSON
и установить для параметра async
значение false. Это заставит звонок ждать ответа. Как правило, это плохая идея, поэтому вы, возможно, захотите подумать, есть ли какой-то способ получить ту же функциональность, используя асинхронное поведение. Использование async: false
приведет к зависанию браузера во время ожидания ответа. Если этот ответ займет некоторое время, в большинстве случаев он будет очень плохим для пользователя.