我在我的控制器中运行任务.我希望它返回
JSON数据.就目前而言,我将我的JSON数据包装在模板HTML中.如何告诉Joomla只从控制器返回JSON数据?这是我的功能:
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 ); }
这会返回:
<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>
我想得到:
{"foo":"bar"}
您不需要构建特殊的JSON视图(view.json.php;或控制器progressreports.json.php)来实现这一点.您唯一要做的就是回显JSON字符串并关闭应用程序.
public function run( ) { JFactory::getDocument()->setMimeEncoding( 'application/json' ); JResponse::setHeader('Content-Disposition','attachment;filename="progress-report-results.json"'); $data = array( 'foo' => 'bar' ); echo json_encode( $data ); JFactory::getApplication()->close(); // or jexit(); }
如果要为HTML和JSON输出提供相同的功能(由调用者选择),则只需要一个单独的视图(或控制器).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。