2016-10-12 3 views
-1

Я хочу вернуть значение из функции getJson, но событие не состоится, так как getJSON ждет. Я попытался реализовать функцию обратного вызова, но результат такой же. Мой код

function getFBName(callback) { 
    $.getJSON("http://ip-api.com/json/?callback=?", function (data) { 
    callback(data); 
    }); 
} 

function handleName(a) { 
    console.log(JSON.stringify(a)); 
    return JSON.stringify(a); 
} 

результат консоли верно, но возвращается значение «не определено»

+0

Для чего нужна функция handleName? –

+0

потому что я вызываю handleName как это 'Ip': '"+ getFBName (handleName) +"' –

+0

Кажется, вы пытаетесь вернуть результат синхронно, когда '$ .getJSON' является асинхронным, даже с использованием обратного вызова? – adeneo

ответ

0

Если вы хотите, чтобы получить значение для возврата функции getFBName. Вы можете сделать Somthing так:

function getFBName(callback) { 
    $.getJSON("http://ip-api.com/json/?callback=?") 
    .done(function(result) { 
     console.log(result.a); //assuming that exist the element a 
    }); 
}; 

Примечание: Вы можете поставить точку останова в «console.log» и проверить, почему вернуться неопределенными. Убедитесь, что вы правильно используете результат ответа json. Помните, что getJSON является асинхронным

+0

где функция обратного вызова im sory, но я не понимаю, и я пробовал этот код, я имею в виду пробованную функцию .done, но я принимаю тот же результат –

Смежные вопросы