Вывод результата из getJSON [дубликат]

217
26 мая 2018, 07:30

На данный вопрос уже ответили:

  • Как вернуть значение из события или из функции обратного вызова? Или хотя бы дождаться их окончания 3 ответа

Делаю запрос (В data лежит ключ и все необходимое для запроса):

function sendLanguageRequest() {
    let language;
    $.getJSON('https://translate.yandex.net/api/v1.5/tr.json/detect', data).done(function (json) { language = json});
    return language;
}

Функция возвращает undefined.

Но если присвоение переменной мы заменим выводом результата в консоль то в консоли мы увидим результат.

function sendLanguageRequest() {
    $.getJSON('https://translate.yandex.net/api/v1.5/tr.json/detect', data).done(function (json) { console.log(json)});
}

В консоли:

{code: 200, lang: "en"}

Как вывести это результат в переменную чтобы потом вывести через return?

P.S. Я видел подобные вопросы, но так и не нашел в них нормального ответа

Решение которым я пользуюсь выглядит так, но не позволяет выводить через return.

'use strict'
let language;
function sendLanguageRequest() {
    $.getJSON('https://translate.yandex.net/api/v1.5/tr.json/detect', data, getLanguage);
    function getLanguage(response) {
        language = response.lang
    }
}
Answer 1

Дело в том, что $.getJSON ... .done выполняется позже нежели выполняется return language и поэтому переменная пустая.

Решение: вместо переменной передать пришедший ответ в функцию setLanguage(language):

function sendLanguageRequest()
{
    $.getJSON('https://translate.yandex.net/api/v1.5/tr.json/detect', data)
        .done(function (json)
        {
            if(json.code == 200)
                setLanguage(json.lang)
        });
}
function setLanguage(language)
{
    //здесь делаете присвоение языка чему вам надо
}

Советую вам изучить как работает AJAX.

READ ALSO
JS Jquery Собираем команду для запроса в бд

JS Jquery Собираем команду для запроса в бд

Есть 3 поля select и 1 запрос ajax хочу из 3х селектов собрать один запрос, что бы подставить в ajax

323
Графики. C# WinForms

Графики. C# WinForms

Какую библиотеку или может встроенный модуль использоваться для построения таких сложных графиковИ возможностью потом сохранить его в pdf формате...

198
Сохранение файла от имени пользователя C#

Сохранение файла от имени пользователя C#

Вопрос: Можно ли сохранить файл в сетевую директорию используя учетную запись другого пользователя?

189
ORA-01036: как исправить данную проблему?

ORA-01036: как исправить данную проблему?

При выполнении запроса назад возвращает сообщение о том, что неверный тип данныхКак это можно исправить? Таблица SQL в Oracle SQL Database XE 11g release-2:

253