我在我的控制器中运行任务.我希望它返回
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字符串并关闭应用程序.
原文链接:/php/138906.htmlpublic 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(); }