AJAX基础设施主要在tiki-jquery.js($.fn.loadService、$.fm.tikiModal和函数ajaxLoadingShow()和ajaxLoaddingHide())中实现。后端部分位于tiki-ajax_services.php和Service_Broker类中。db/config/controllers.xml将AJAX控制器名称映射到实现它们的类。
旧笔记-需要更新
入门
要在tiki中使用ajax:
在php文件中,包括tiki-setup.php之后:
require_once(“lib/ajax/ajaxlib.php”);
这将导入xajax并在全局范围内声明$ajaxlib,这是TikiAjax的一个实例,是xajax类的扩展。
调用$smarty->display(“tiki.tpl”)之前:
$ajaxlib->processRequests();
您无需担心将getJavaScript()分配给smarty或任何客户端声明,所有事情都已由tiki处理。
要在服务器中声明和注册ajax函数,请在lib/feature中创建一个名为feature-ajax.php的php文件。在这个文件中,声明函数并用$ajaxlib->registerFunction()注册它们。如果需要javascript文件,请创建文件lib/feature/feature-ajax.js来保存这些函数。
Ajax开发指南
Ajax应用程序并不适用于所有人。它破坏了可访问性,无法与其他浏览器或旧浏览器一起使用。考虑到这一点,tiki ajax开发指南旨在:
- 使用和不使用ajax保持tiki功能和布局的简单性
- 避免分叉代码
1-基于模板的通用布局
无论是否使用ajax,页面的外观必须始终相同,并且由模板定义。只要保留html元素id,更改模板就应该同时更改这两种模式。
2-首次静态加载内容
如果你用smarty交付空集装箱,然后有一个文档load()来加载数据,那么您可能会违反指令#1。像没有ajax一样加载内容,然后当用户请求更多内容时,更新html元素的属性。
教程-使区域动态
1-识别模板组件
在你的模板中找到你想要动态的代码块。
剪切该代码,粘贴新模板(本例中为$includeFile),并在html元素中包含:
复制到剪贴板
<div id=“elementId”>{include-file=$includeFile}</div>
2-更改您的tpl以在链接中使用{ajax_href}块
现在,编辑模板并更改链接,如下所示:
<a href=“tiki-feature.php?param=value..”>
到
<a{ajax_href模板=$includeFile
htmlelement=$elementId}tiki-feature.php?。。。{/ajax_href}>
其中$includeFile是要加载的模板,$elementId是要加载模板的元素的id。
提示:使用doc/devtools/make_ajax_template.pl将正则表达式应用于模板。编辑文件并设置正确的参数,然后进行备份并调用
./doc/devtools/make_ajax_template.pl模板/tiki-something.tpl
3-修改php文件以处理请求
在php文件的开头,在tiki-setup.php之后,输入:
require_once(“lib/ajax/ajaxlib.php”);
最后,在$smarty->display()或任何输出之前,注册要动态加载的模板并处理请求:
$ajaxlib->registerTemplate($template);
$ajaxlib->processRequests();
这就是全部!