Если вам необходимо вызвать собственную JavaScript функцию по результатам обработки AJAX запроса, необходимо сделать следующее:
В класс вашей формы, в нужное поле прописываем вызов callback функции.
public function buildForm(array $form, FormStateInterface $form_state,$unid = NULL) { ...
$form['my_ajax_field'] = [
'#ajax' => [
'callback' => array($this, 'yourAjaxCallback'),
'event' => 'change',
'progress' => array(
'type' => 'throbber',
'message' => t('Processing...'),
),
],
];
...
}
В функцию callback добавляем строку с вызовом BaseCommand, где первым аргументом будет название JavaScript функции, которую необходимо выполнить в ответ на AJAX вызов формы.
public function yourAjaxCallback(array &$form, FormStateInterface $form_state) {
$response = new AjaxResponse();
...
$response->addCommand(new BaseCommand('yourFunction',array()));
return $response;
}
В яваскрипте страницы прописываем следующий код:
$(document).ready(
function(){
Drupal.AjaxCommands.prototype.yourFunction = function(ajax, response, status) {
...
}
}
}
Теперь мы можем не только манипулировать html кодом страницы посредствам InvokeCommand, но и вызывать собственные функции. Если же необходимо вызвать функцию с параметрами... с этим еще необходимо разобраться. Очевидно, параметры, которые мы передаем во второй параметр класса BaseCommand должны содержаться в параметре response функции yourFunction.