drupal 8在#AJAX事件后调用JavaScript函数

drupal 8在#AJAX事件后调用JavaScript函数,javascript,ajax,drupal,drupal-8,drupal-ajax,Javascript,Ajax,Drupal,Drupal 8,Drupal Ajax,我希望在执行ajax操作后运行js脚本 例如,它对Drupal 7的工作: Drupal.behaviors.events = { attach: function(context, settings) { $('#example').bind('ajaxSuccess', function(data, status, xhr) { >>code here<< }); } }; Drupal.behaviors.events={

我希望在执行ajax操作后运行js脚本

例如,它对Drupal 7的工作:

  Drupal.behaviors.events = {
  attach: function(context, settings) {
    $('#example').bind('ajaxSuccess', function(data, status, xhr) {
      >>code here<<
    });
  }
};
Drupal.behaviors.events={
附加:功能(上下文、设置){
$(“#示例”).bind('ajaxSuccess',函数(数据、状态、xhr){

>>在
\Drupal\Core\Ajax\InvokeCommand
上使用对象
\Drupal\Core\Ajax\AjaxResponse::addCommand()
在此编码

Ajax可以与表单一起使用以提供各种内容。涉及的典型步骤包括:

  • 创建一个表单
  • ::buildForm()
    中使用
    #ajax
    呈现元素
  • 创建回调
有两种方法可以响应ajax请求。您可以使用
AjaxResponse
对象进行响应,也可以使用HTML替换元素,该元素可以是原始HTML或呈现数组

要调用自己的Javascript函数(如您所愿),您必须使用
AjaxResponse
对象进行响应。

这是一本书


以下是一个例子:

部分
::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;
}


你可以在这里找到一个。

你的
#ajax
是表单上的回调吗?你能添加你自己的
#ajax
实现的Drupal 8代码吗?但是我不需要编写php代码。我不需要创建表单。我只想在成功的ajax挂起后运行JS处理程序。Drupal 7我的示例工作正常。我很瘦k Drupal 8有一点变化。因此,您的问题似乎有误导性。您应该添加更多信息。例如,您试图“钩住”哪种形式或操作在Ajax调用之后,这与核心模块或contrib模块有关?嗯,该模块来自用于编辑用户配置文件的core.Form。添加用户的图片。我希望,当图片被加载(或删除)时,这只是一个Ajax表单。我的js代码应该可以工作。