首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Typo3 v9插件JSON响应为空

Typo3 v9插件JSON响应为空
EN

Stack Overflow用户
提问于 2021-08-31 14:31:34
回答 1查看 178关注 0票数 0

具有以下用于ajax请求的TYPO3页面

代码语言:javascript
复制
ajaxAutocomplte_page = PAGE
ajaxAutocomplte_page {
    typeNum = 111871
    10 = COA_INT
    10 {
        userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
        extensionName= MyExt
        pluginName = AjaxAutocomplete
        vendorName = TYPO3
    }

    config {
        disableAllHeaderCode = 1
        additionalHeaders.10.header = Content-type:application/json
        xhtml_cleaning = 0
        debug = 0
        no_cache = 1
        admPanel = 0
    }
}

并从Controller返回以下响应

代码语言:javascript
复制
 public function autocompleteJsonAction()
    {
        $query = $_GET['query'];

        $data = $this->templatesRepository->getAutocompleteData($query);

        $this->view->setVariablesToRender(['data']);
        $this->view->assign('data', $data);
    }

将在直接访问URL时生成JSON数据,但如果我通过javascript请求异步,则不会生成JSON数据。

这个案子出了什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-01 05:33:43

试试下面的代码,也许能帮到你。对我来说很管用。

代码语言:javascript
复制
<?php

public function autocompleteJsonAction() {
    $query = \TYPO3\CMS\Core\Utility\GeneralUtility::_GET('query');
    $data = $this->templatesRepository->getAutocompleteData($query);

    $this->response->setHeader('Content-Type', 'application/json', true);
    $this->response->sendHeaders();

    $theView = $this->objectManager->get("TYPO3\\CMS\\Extbase\\Mvc\\View\\JsonView");
    $theView->setControllerContext($this->controllerContext);
    $theView->assignMultiple([
        'items' => $data
    ]);
    $theView->setVariablesToRender(['items']);

    return $theView->render();
}

希望这对你也有用!

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

https://stackoverflow.com/questions/69000570

复制
相关文章

相似问题

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