首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >后端扩展中的TYPO3 Ajax

后端扩展中的TYPO3 Ajax
EN

Stack Overflow用户
提问于 2013-04-26 14:42:05
回答 1查看 2.2K关注 0票数 3

我一直在寻找在TYPO3扩展中使用AJAX特性的方法。

我想在我的扩展“汽车”中选择两个字段--品牌和型号(模型与数据库中的汽车链接):

台面品牌:

  • uid
  • 标签

表格模型:

  • uid
  • 标签
  • 品牌(品牌表中的uid)

在后台,当我创建一个新的“汽车”,首先我选择一个品牌。然后,我希望模型字段自动更新并显示一个列表,其中包含所选品牌的所有型号。

我找到了文档,但我不知道如何处理客户端。我必须在哪个文件中添加以下几行,以及JavaScript到哪里:

代码语言:javascript
复制
$this->doc->loadJavascriptLib('contrib/prototype/prototype.js');
$this->doc->loadJavascriptLib('js/common.js');
EN

回答 1

Stack Overflow用户

发布于 2017-01-09 11:15:40

首先..。你所推荐的医生并不是正确的选择。请看这个文档

下面是在您的上下文中要遵循的基本步骤。

1)在ext_tables.php中注册ajax调用

代码语言:javascript
复制
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerAjaxHandler (
   'controllername::function_name',
   'PITS\\PitsDownloadLogin\\Controller\\controllername->function_name'
);

上面提到的'function_name‘躺在’控制器‘中,定义了在ajax调用中执行的逻辑。

2)定义ajax调用 <- -这部分是您正在讨论的客户端

当然,您有一个脚本文件,我指的是JS文件,在这里,要触发onclick的函数是写的。在您的例子中,在选择品牌的第一个栏的'onChange‘中定义一个js函数。在此函数中定义ajax。

代码语言:javascript
复制
$.ajax({
type: 'GET',
url: TYPO3.settings.ajaxUrls['controllername::function_name'],
data: {
    "page" : page,
    "limit": limit,
}, 

现在,将在相应控制器的“function_name”中接收以下参数。你想怎么处理就怎么处理。

3)控制器存根

代码语言:javascript
复制
/**
 * Renders the table as pagination occurs
 *
 * @param array $params Array of parameters from the AJAX interface, currently unused
 * @param \TYPO3\CMS\Core\Http\AjaxRequestHandler $ajaxObj Object of type AjaxRequestHandler
 * @return void
 */
public function function_name($params = array(), \TYPO3\CMS\Core\Http\AjaxRequestHandler &$ajaxObj = NULL) {     

    $limit = GeneralUtility::_GP('limit');
    $page = GeneralUtility::_GP('page');
         **** Code Processing ***
    $result = result of whole processing
    $ajaxObj->addContent('success', $result); // In JS 'success' is the final result passed from here
    $ajaxObj->setContentFormat('json');       // Writing back as JSON array
}

在你的JS文件里你可以决定剩下的,

代码语言:javascript
复制
success: function (success) {
    console.log(success);
},
error: function (error) {
    console.log(error);
}

我希望你偏离了正确的方向。快乐的编码伙伴。好了!

这个答案现在已不受欢迎了。TYPO3不再支持此功能。请改用AjaxRoutes。这是一种简单得多的方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16239174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档