我希望在执行 ajax 操作后运行该 js 脚本。
例如,它对 Drupal 7 的工作:
Drupal.behaviors.events = {
attach: function(context, settings) {
$('#example').bind('ajaxSuccess', function(data, status, xhr) {
>>code here<<
});
}
};
如何为 Drupal 8 编写成功的脚本?
我希望在执行 ajax 操作后运行该 js 脚本。
例如,它对 Drupal 7 的工作:
Drupal.behaviors.events = {
attach: function(context, settings) {
$('#example').bind('ajaxSuccess', function(data, status, xhr) {
>>code here<<
});
}
};
如何为 Drupal 8 编写成功的脚本?
通过\Drupal\Core\Ajax\InvokeCommand
在\Drupal\Core\Ajax\AjaxResponse::addCommand()
.
Ajax 可以与表单一起使用以提供各种东西。涉及的典型步骤:
::buildForm()
使用#ajax
渲染元素中。有两种方式来响应 ajax 请求。您可以使用AjaxResponse
对象或 HTML 进行响应,以替换可能是原始 HTML 或渲染数组的元素。
AjaxResponse
要调用您自己的 Javascript 函数(如您所愿),您必须使用一个对象进行响应。
部分::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;
}
您可以在此处找到可以在响应中传递的所有命令的列表。