Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal调用ajax后如何重新加载自定义JavaScript文件?_Javascript_Ajax_Drupal - Fatal编程技术网

Drupal调用ajax后如何重新加载自定义JavaScript文件?

Drupal调用ajax后如何重新加载自定义JavaScript文件?,javascript,ajax,drupal,Javascript,Ajax,Drupal,Ajax调用完成后,如何重新加载自定义JavaScript文件 在我的例子中,我有一个自定义JavaScript文件来操作视图和数据 过滤器。它在第一次加载页面时就可以正常工作 但是一旦用户设置了过滤器并点击Apply(即在Ajax调用之后),JavaScript似乎就停止工作了。它在那里,但没有记录任何事件 我在Drupal.org上读了一些文章,但这并没有给我一个可靠的解决方案 注意-它不是module.js文件,而是主题文件夹下的一个自定义独立.js文件。要添加脚本,您需要使用docume

Ajax调用完成后,如何重新加载自定义JavaScript文件

在我的例子中,我有一个自定义JavaScript文件来操作视图和数据 过滤器。它在第一次加载页面时就可以正常工作

但是一旦用户设置了过滤器并点击Apply(即在Ajax调用之后),JavaScript似乎就停止工作了。它在那里,但没有记录任何事件

我在Drupal.org上读了一些文章,但这并没有给我一个可靠的解决方案


注意-它不是module.js文件,而是主题文件夹下的一个自定义独立.js文件。

要添加脚本,您需要使用document.createElement(“脚本”),您不能只设置innerHTML。有关处理独立浏览器的示例,请参阅。

您应该仔细阅读,尤其是

主要的一点是,您需要将自定义JavaScript文件转换为Drupal.behaviors,因为它们将通过类似AJAX的调用重新连接到动态加载的内容。

问题可能是“如何使用更新的dupal回调参数启动js函数?”

这就是我所做的:

我的表格是这样的:

$form['letterdrop_id'] = array(                       
    '#type' => 'select',                              
    '#title' => 'Letterdrops',                        
    '#options' => $letterdrops,                       
    '#prefix' => '<div id="replace_div_ld">',         
    '#suffix' => '</div>',                            
    '#ajax' => array(                                 
      'callback' => 'agc_ems_form_map_change',        
      ),                                              
    );                                                
这是我的js函数

(function($, Drupal) {                                                      
  // put function into drupal commands:   
  Drupal.ajax.prototype.commands.afterAjaxCallbackExample = 
     function(ajax, response, status) {
    // response object as passed in our Ajax callback          
    // do what you want in here
    alert(response.selectedValue);                                          
  };                                                                        
}(jQuery, Drupal));      
100%归功于

(function($, Drupal) {                                                      
  // put function into drupal commands:   
  Drupal.ajax.prototype.commands.afterAjaxCallbackExample = 
     function(ajax, response, status) {
    // response object as passed in our Ajax callback          
    // do what you want in here
    alert(response.selectedValue);                                          
  };                                                                        
}(jQuery, Drupal));