Возвращает bool из функции js, которая выполняет запрос ajax - PullRequest
0 голосов
/ 25 февраля 2020

У меня проблема, var x = isCustomerInWarehouse(customerNumber, url) всегда undefined . Я не знаю, как переписать эту функцию, чтобы вести себя с boolean типом возврата.

function isCustomerInWarehouse(customerNumber, url) {

    $.ajax({
        url: url,
        type: 'POST',
        data: { customerNumber: customerNumber },
        cache: false,
        async: false
    })

        .done(function (data) {

            if (data.result) {
                return true;             
            } else {
                return false;
            }
        })

        .fail(function () {
            alert('Ajax error happened.')
        });  

};

Есть идеи? Я не против любой другой javascript библиотеки для вызова ajax, такой как fetch или ax ios.

вторая попытка

function isCustomerInWarehouse(customerNumber, url) {
    var returnValue = false;

    $.ajax({
        url: url,
        type: 'POST',
        data: { customerNumber: customerNumber },
        cache: false,
        async: false // does not matter what is here :/
    })

        .done(function (data) {

            if (data.result) {
                returnValue = true;             
            } else {
                returnValue = false;
            }
        })

        .fail(function () {
            alert('Ajax error happened.')
        });  

    return returnValue;
};

но значение - это склад var isWarehouse = isCustomerInWarehouse(customerNumber, url) -

enter image description here

Это становится абсурдом проблема, но я до сих пор не знаю, как ее решить: /

1 Ответ

0 голосов
/ 25 февраля 2020

У вас нет оператора return;) это первое и второе, что вы не должны использовать jquery ajax. Рекомендуется использовать fetch api или ax ios.

EDIT:

function isCustomerInWarehouse(customerNumber, url) {
    return fetch(url, {
      method: "POST",
      cache: "no-cache",
      body: JSON.stringify({
        customerNumber
      })
    })
        .catch(() => alert("Ajax error happened."))
        .then(data => data.result);
};

Эта функция возвращает Promise с data.result. Как вы думаете, что находится в data.result в вашем коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...