Прежде всего ваш PHP-скрипт нуждается в улучшении.Вы должны включить сообщение об ошибке и использовать подготовленные операторы.Значение также должно быть проверено перед использованием.
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli('localhost','root','','mydatabase');
$db->set_charset('utf8mb4');
if (isset($_POST['date2'])) {
$date = (new DateTime($_POST["date2"]))->format('Y-m-d'); //validate format
// prepare -> bind -> execute
$stmt = $query = $db->prepare("SELECT 1 FROM mytable WHERE date = ? ");
$stmt->bind_param('s', $date);
$stmt->execute();
// get a single column from the first row of the mysql result
$exists = (bool)$stmt->get_result()->fetch_row();
// send JSON response to AJAX
echo json_encode(['exists' => $exists]);
}
Затем в вашем AJAX вам необходимо проверить возвращаемое значение.
$(document).ready(function {
$("#date").change(function {
var date = $("#date").val();
$.ajax({
url: "variable.php",
method: "POST",
data: {
date2: date
},
dataType: "text",
success: function(response) {
$obj = JSON.parse(response); // Since the datatype is text we need to make in a valid JSON
$("#checkbox_h1").attr("disabled", $obj.exists); // $obj.exists has the return value from mysql
}
});
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="date" id="date">
<input type="checkbox" name="checkbox[]" id="checkbox_h1" name="h1">
<input type="checkbox" name="checkbox[]" id="checkbox_h2" name="h2"">
Это очень грубый код, который дает вам только представление.Вы можете написать что-то подобное.