Есть код, который запрашивает подтверждение удаления выбранной категории меню. В случае положительного ответа, на сервер отправляется идентификатор категории для проверка наличия у данной категории подкатегорий в базе. Если подкатегорий нет - возвращается false, если есть - true. Ну и соответственно на клиенте обрабатывается ответ, в зависимости от которого переходит или не переходит по ссылке на удаление. Проблема в том, что при ответе true у меня выскакивает alert с предупреждением, а вот return false почему-то не срабатывает и все равно происходит переход по ссылке:
Клиент:
$('.sidebar').on('click', 'a', function() {
var deleteCategory = confirm('Вы действительно хотите удалить выбранную категорию?');
if (deleteCategory) {
var deleteCategoryId = $(this).data('id');
$.get(
'/includes/admin.php',
{'deleteCategoryId': deleteCategoryId},
function(check) {
if (check) {
alert('Сначала удалите все блюда и подкатегории выбранной категории');
return false;
} else {
return true;
}
}
);
} else {
return false;
}
});
Сервер:
// Проверяет, есть ли у категории дети
function checkChildrenCategory($categoryId, $database)
{
$sql = 'SELECT id FROM menu WHERE parent_id = ' . $categoryId;
if ($result = mysqli_query($database, $sql)) {
if (mysqli_num_rows($result) > 0) {
return true;
} else {
return false;
}
}
}
// Собственно сама проверка на наличие детей
if (isset($_GET['deleteCategoryId'])) {
echo checkChildrenCategory($_GET['deleteCategoryId'], $database);
}