1

Стоит задача асинхронно получить данные в ходе выполнения программы и записывать эти данные в переменные для дальнейшей работы.

Код следующий:

function getPost(url, filters) {

  var d;

  $.post(url, filters).done(function(r) {
    d = JSON.parse(r);
  });

  return d;

}

Возвращается пустота. Что пишу не так?

  • Посмотрите еще здесь http://ru.stackoverflow.com/questions/552672/%D0%97%D0%B0%D0%BD%D0%B5%D1%81%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B9-%D0%B8%D0%B7-%D0%B0%D1%8F%D0%BA%D1%81-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0-%D0%B2-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82-%D0%B2-jquery – Dmitry Aug 13 '16 at 13:44
  • 5
    Этот вопрос задают где-то раз в день. Вот один из постоянных участников попробовал на него подробно ответить: http://ru.stackoverflow.com/questions/554290/%D0%9A%D0%B0%D0%BA-%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8C-%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%B7-%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F-%D0%B8%D0%BB%D0%B8-%D0%B8%D0%B7-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B3%D0%BE-%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2%D0%B0 – Утка Учится Укрываться Aug 13 '16 at 17:19

1 Answers1

2

Функция .done() устанавливает обработчик, который выполнится асинхронно после успешного завершения ajax-запроса, позже, чем функция getPost вернет d, равный undefined.

Выполните обработку полученных данных внутри обработчика

function getPost(url, filters) {
  $.post(url, filters).done(function(r) {
    var d = JSON.parse(r);
    // Выполните обработку полученных данных здесь
  });
}
Dmitry
  • 3,768