首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Joomla -返回JSON数据的控制器任务

Joomla -返回JSON数据的控制器任务
EN

Stack Overflow用户
提问于 2013-05-25 00:40:14
回答 7查看 12.4K关注 0票数 9

我的控制器中有任务run。我希望它返回JSON数据。现在,我将把我的JSON数据包装在模板HTML中。如何告诉Joomla只从控制器返回JSON数据?这是我拥有的函数:

代码语言:javascript
运行
复制
public function run  ( ) {

    JFactory::getDocument()->setMimeEncoding( 'application/json' );

    JResponse::setHeader('Content-Disposition','attachment;filename="progress-report-results.json"');

    JRequest::setVar('tmpl','component');

    $data = array(
        'foo' => 'bar'
    );

    echo json_encode( $data );

}

这将返回:

代码语言:javascript
运行
复制
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb" dir="ltr">
...
</head>
<body class="contentpane">

<div id="system-message-container">
</div>
    {"foo":"bar"}
</body>
</html>

我想要得到:

代码语言:javascript
运行
复制
{"foo":"bar"}
EN

Stack Overflow用户

发布于 2020-12-20 03:48:24

Joomla 4

您必须将参数&format=json添加到您的URL。这会告诉系统您正在等待json响应。系统将呈现JsonDocument,并将发送正确的浏览器标题作为响应。

代码语言:javascript
运行
复制
index.php?option=com_foo&task=report.run&format=json
代码语言:javascript
运行
复制
class Report extends BaseController {

   public function run() {
       $data = [
         'foo' => 'bar'
       ];

       $response = new ResponseJson($data);

       echo $response;
   }
}

不需要使用$app->close();关闭应用程序,因为Joomla的架构会为您处理这一点。

如果你关闭应用程序,你会在渲染过程中错过很多东西。许多事件将不会被触发。此外,您还必须手动发送内容类型的标头。

您的代码应该如下所示。这种方法是而不是推荐的

代码语言:javascript
运行
复制
class Report extends BaseController {

   public function run() {

       $this->app->mimeType = 'application/json';
       $this->app->setHeader('Content-Type', $this->app->mimeType . '; charset=' . $this->app->charSet);
       $this->app->sendHeaders();

       $data = [
         'foo' => 'bar'
       ];

       $response = new ResponseJson($data);

       echo $response;

       $this->app->close();
   }
}
票数 1
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16739800

复制
相关文章

相似问题

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