@Jora00777

Как вернуть результат функции с getJSON?

Недавно столкнулся с проблемой:

function check() {
var site = "https://...";
$.getJSON( site , {
param: param
})
.done(function( data ) {
if (data === undefined || data.length == 0) {
return false;
}else{
return data;
}
});
}

console.log(check()) - возвращает undefined

Как сделать, чтобы возвращался массив data?
  • Вопрос задан
  • 453 просмотра
Решения вопроса 1
@Div100
На тот момент, когда ты вызываешь console.log(check()); В переменную ничего не записалось ибо это асинхронный запрос и он еще может только отправляться на сервер, а ты уже проверяешь результат.
Что можешь сделать:
1. Использовать promise
2. в функции .done выполнять то что тебе нужно, так как, как только придет результат она будет вызвана, например:
function check() {
var site = "https://...";
$.getJSON( site , {
param: param
}) 
.done(function( data ) {
if (data === undefined || data.length == 0) {
return false; 
}else{
console.log(data);
// или все что угодно с data
}
}); 
}

3. Сделать события прихода данных
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$.getJSON - асинхронный запрос. После отправки запроса на сервер выполнение JS-кода продолжается, и console.log выполняется до прихода ответа с сервера. По приходу ответа вызывается callback-функция .done, именно в ней становится известен ответ.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы