我希望在执行ajax操作后运行js脚本。
例如,它对Drupal 7的工作:
Drupal.behaviors.events = {
attach: function(context, settings) {
$('#example').bind('ajaxSuccess', function(data, status, xhr) {
>>code here<<
});
}
};
如何为Drupal 8编写成功的脚本?
答案 0 :(得分:1)
在\Drupal\Core\Ajax\InvokeCommand
上使用对象\Drupal\Core\Ajax\AjaxResponse::addCommand()
。
Ajax可以与表单一起使用来提供各种功能。涉及的典型步骤:
::buildForm()
内使用#ajax
渲染元素。有两种方法可以响应ajax请求。您可以使用AjaxResponse
对象或使用HTML进行响应,以替换可能是原始HTML或渲染数组的元素。
要根据需要调用自己的Javascript函数,您必须使用AjaxResponse
对象进行回复。
这是complete documentation of Ajax on Drupal 8。
<小时/> 以下是示例:
部分::buildForm()
,实现了Ajax渲染元素:
$form['submit'] = [
'#type' => 'submit',
'#value' => $this->t('Send'),
'#ajax' => [
'callback' => [$this, 'respondToAjax'],
]
];
这是Ajax回调方法,采用相同的形式:
/**
* @param array $form
* Form API array structure.
* @param array $form_state
* Form state information.
*
* @return \Drupal\Core\Ajax\AjaxResponse
* Response object.
*/
public function respondToAjax(array &$form, FormStateInterface $form_state) {
$response = new AjaxResponse();
$response->addCommand(new InvokeCommand('#example', 'ajaxSuccess'));
return $response;
}