0

Делаю так:

function test(){
    let result = false;
        $.ajax({
            url: url,
            method: 'GET',
            data: {id : id},
            success: function() {
                result = true;
            }
        });

      return result;
}

Всегда возвращает false...

Shevtsov Eugene
  • 804
  • 6
  • 23
  • 6
    Потому что обработчик success будет вызван когда-нибудь в будущем, когда ответит сервер, а result будет возвращён прямо сейчас, когда он равен false. Возвращайте promise. – Sergey Gornostaev Aug 11 '19 at 11:02
  • Блин! Спасибо!) – Shevtsov Eugene Aug 11 '19 at 11:36

1 Answers1

1

Ajax-запрос асинхронный, поэтому результат его выполнения появится позже, после того, как произойдет возврат значения из функции.

$.ajax(), начиная с jQuery версии 1.5,поддерживает интерфейс обещаний(Promise) - советую использовать его.

Я переписал ваш код с использованием обещаний:

function test(){
    return $.ajax({
        url: url,
        method: 'GET',
        data: {id : id}
    });
}

$result = test();
$result
.done(function (data) {
    console.log("Success!" + data);
})
.fail(function (e) {
    console.log("Failure!" + e);
});

Jigius
  • 3,115