jQuery函数返回的数据完全被忽略

时间:2019-07-20 11:43:34

标签: javascript jquery undefined

我有一个很奇怪的问题。 我的表格检查可用性。之后,它停止或允许该过程继续进行。或者至少。应该。

在导航功能中,我具有以下代码:

    var available = check_availability(BookingStart + ' ' + StartTime, BookingEnd + ' ' + EndTime);

    if (available === false) {
        alert('not available');
        console.log('our function says unavailable');

        // *** UNAVAILABLE LOCATION FOR THIS PERIOD
        return false;
    }

这将从 check_availability()函数中加载结果,如果为true,则允许继续进行;如果为false,则...暂停。

但是这是预期的方法。

我的check_availability()代码:

function check_availability(start, end) {
    if (!$('#availability_message').hasClass('hidden')) {
        $('#availability_message').addClass('hidden');
    }

    console.log('checking availability for : ' + start + ' - ' + end);

    $.ajax({
        type: 'POST',
        url: '{@FullAppBase}ajaxcall/availability',
        data: {
            'booking_start': start,
            'booking_end': end,
        },
        ///######## IN CASE OF SUCCESS
        success: function (response) {
            console.log('avb : ' + response);
            if (response == 1) {
                console.log('en b btn');
                $('#availability_message').addClass('hidden');
                return true;
            }
            else {
                console.log('dis b btn');
                $('#availability_message').removeClass('hidden');
                return false;
            }
        },

        error: function (response) {
            console.log('error: ' + response);
        }
    }
    );
}

每当我检查控制台的内容时,它就可以正常工作。 每当我硬编码时:available = false ..它也很好。 但是我当然希望它是动态的。

    var available = check_availability(BookingStart + ' ' + StartTime, BookingEnd + ' ' + EndTime);

    available = false;

    if (available === false) {
        alert('not available');
        console.log('our function says unavailable');

        // *** UNAVAILABLE LOCATION FOR THIS PERIOD
        return false;
    }

对我来说,这没有任何意义。 由于可用变量应该已经包含布尔值true / false。

但是当我在屏幕上显示警告时:

我明白了:

available = undefined

按照我的逻辑,这没有任何意义。但是我可能缺少一些东西。 谁能告诉我我要去哪里错了?

编辑 据我了解,这是因为这是一个异步调用。 但我也知道

$.ajax({
    type: 'POST',
    url: '{@FullAppBase}ajaxcall/availability',
    async: false,
    data: {

不再工作。

但是我应该重建代码来做吗?

call A {

   response {
    call B {
       response {

         call C {


                }


       }
     }
  }
}

我正确地理解了那个吗?

1 个答案:

答案 0 :(得分:-1)

您可以使用ajax调用XMLHttpRequest的XMLHttpRequest