【问题标题】:Loading views_accordion through an ajax request通过 ajax 请求加载 views_accordion
【发布时间】:2014-06-07 10:33:34
【问题描述】:

我目前正在通过自定义模块中的 ajax 请求加载视图:

$.getJSON('/reports/summarized-progress/get_output_activities/'+nid, null,activities);

上述请求的drupal页面返回以下内容:

$output_arg=arg(3);
$html="";
$activities=views_embed_view('activities','block_activities',$output_arg); //this returns a view accordion view
if(!empty($activities)) {
$html.='';
$html.=$activities;
$html.='';
}
drupal_json_output(array('data'=>$html));

手风琴/可折叠功能不适用于加载的内容。任何想法是否需要通过 module_load_include 在我的自定义模块中包含任何文件?为此需要做什么?

【问题讨论】:

  • 您的 javascript 错误控制台中是否有任何错误?你 html 通过验证了吗?
  • 嗨,Nathan,没有出现任何错误。查询返回正确的 HTML。但是,我认为问题在于手风琴工作所需的库可能无法正确加载。

标签: drupal drupal-7 drupal-modules drupal-views drupal-ajax


【解决方案1】:

每当您通过 ajax 请求加载内容时,您必须确保所需的 js 设置/文件与您的内容一起加载。

在大多数情况下,在内容加载期间通过 drupal_add_js() 填充的 $javascript 静态变量不会发送到浏览器,但您可以手动执行此操作:

  • 这里是一个工作 Drupal 6 示例:
// 获取视图内容。 $view = views_embed_view($name, $display_id); // 获取javascript数据。 $js = drupal_add_js(NULL, NULL, 'header'); // 准备要在客户端处理的数据。 $settings = drupal_to_js(call_user_func_array('array_merge_recursive', $js['setting'])); // 告诉客户端使用收集的 $settings 扩展 Drupal.settings。 $script = '

【讨论】:

  • 谢谢...这很有用。但是,您能否更新您的答案以说明如何将手风琴 js 文件包含并添加到上述上下文中。我像这样添加它,但它似乎是错误的: $js= drupal_add_js(drupal_get_path('module', 'jquery_update') .'/replace/ui/ui/jquery.ui.accordion.js',array('type' => '设置')); //并按照您的方式继续编写其余代码
  • 我更新了我的答案。包含文件的另一种(手动)方法:在 ajax 回调的 $script 变量中添加脚本标记:<script type="text/javascript" src="source.js">.
  • 非常感谢!像魅力一样工作!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 2013-01-21
  • 2018-09-26
  • 1970-01-01
相关资源
最近更新 更多