php – Joomla – 返回JSON数据的Controller任务
发布时间:2020-12-13 13:50:37 所属栏目:PHP教程 来源:网络整理
导读:我在我的控制器中运行任务.我希望它返回 JSON数据.就目前而言,我将我的JSON数据包装在模板HTML中.如何告诉Joomla只从控制器返回JSON数据?这是我的功能: public function run ( ) { JFactory::getDocument()-setMimeEncoding( 'application/json' ); JRespo
我在我的控制器中运行任务.我希望它返回
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输出提供相同的功能(由调用者选择),则只需要一个单独的视图(或控制器). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |