Если юзаешь jQuery, то методы типа `.html()` или `.load()` сами подхватывают `<script>` теги в ответе и выполняют. Если же голый XHR/fetch, то придётся вытаскивать скрипты регуляркой и пускать через `eval` (так себе идея) или создавать элемент script через `createElement` и вставлять в DOM – тогда сработает.
Лучше не смешивать HTML и JS в одном ответе. Возвращайте с сервера структурированные данные (например, JSON с полем html и отдельным полем для идентификатора обработчика), а сам JavaScript держите в отдельных файлах, подключаемых заранее. После вставки HTML через fetch просто вызывайте нужную функцию из вашего модуля — это чище и безопаснее, чем eval.
Если всё же нужно выполнить именно сгенерированный PHP-скрипт, используйте createElement('script') и присвойте ему текст через textContent (не innerHTML, чтобы не было проблем с экранированием), затем добавьте в DOM. Но помните: скрипты, вставленные через innerHTML, не выполняются — это частая ошибка.
Практичный вариант: на элементах ответа развесьте data-атрибуты, а после загрузки инициализируйте поведение через делегирование событий на document. Так вы контролируете порядок выполнения и не зависите от того, как браузер обработает вставленный код.