drupal 8在#AJAX事件后调用JavaScript函数
我希望在执行ajax操作后运行js脚本 例如,它对Drupal 7的工作: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={
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代码应该可以工作。