我有一个很奇怪的问题。 我的表格检查可用性。之后,它停止或允许该过程继续进行。或者至少。应该。
在导航功能中,我具有以下代码:
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 {
}
}
}
}
}
我正确地理解了那个吗?