@KitOsorgin

Как вернуть результат асинхронного запроса?

Имеется функция, делающая POST запросы к серверу:

function post(params) {
    return $.ajax({
        type: "POST",
        url: "php/post.php",
        data: params,
        dataType: 'json',
        success: function () {}
    });
}


Также имеется функция, которая должна вернуть ответ сервера:

function dictionary(word) {
    $.when(post({'word':word})).done(function(data){
        return data;
    });
}


Собственно, вопрос: как заставить эту функцию вернуть результат запроса к серверу (data), поскольку из .done функции значение data, разумеется, не возвращается?

P.S. Изначально решил проблему через добавление 'async': false, но отладка ругается, что такой подход не желателен. В связи с чем интересует возможное решение через асинхронный запрос.
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
@zkrvndm
Софт для автоматизации
Используйте промисы:
async function dictionary(word) {
    var response = await $.ajax({
        type: "POST",
        url: "php/post.php",
        data: {'word':word},
        dataType: 'json'
    });
    console.log('Получен ответ сервера:');
    console.dir(response);
    return response;
}

Но нужно понимать как все это работает, иначе прострелите себе ногу, образно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@karminski
Senior React.JS Developer
Параметр success Ajax-запроса должен возвращать результат, именно этот результат и будет доступен в виде data функции done.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы