J
J
Jora007772017-01-21 15:53:50
JSON
Jora00777, 2017-01-21 15:53:50

How to return the result of a function with getJSON?

Recently ran into a problem:

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()) - returns undefined

How do I get the data array to be returned?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
V
Vladislav, 2017-01-21
@Jora00777

На тот момент, когда ты вызываешь 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. Сделать события прихода данных

R
Rsa97, 2017-01-21
@Rsa97

$.getJSON - асинхронный запрос. После отправки запроса на сервер выполнение JS-кода продолжается, и console.log выполняется до прихода ответа с сервера. По приходу ответа вызывается callback-функция .done, именно в ней становится известен ответ.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question