Добавьте строчку
$(document).on('change','#direct',function(){
let id = document.getElementById("direct").value;
$.getJSON("ajax", {id}, function (data) {
$("#modules").html('');
$.each(data, function (index, item) {
$("#modules").append('<option value ="'+item.ID+'">'+item.NAME+'</option>');
});
});
});
Ну и чтобы уменьшить обращения к DOM дереву, элемент #modules можно тоже скешировать.
$(document).on('change','#direct',function(){
let id = document.getElementById("direct").value; // Возможно тут вам тоже не нужен let? мб const
const modulesEl = $("#modules");
$.getJSON("ajax", {id}, function (data) {
modulesEl.html('');
$.each(data, function (index, item) {
modulesEl.append('<option value ="'+item.ID+'">'+item.NAME+'</option>');
});
});
});