I'm using Zend Framework 1.x for my project. I want to create a Web service return only JSON string for the caller function. I tried to use Zend_Controller_Action
and applied those ways:
1.
$this->getResponse()
->setHeader('Content-type', 'text/plain')
->setBody(json_encode($arrResult));
2.
$this->_helper->getHelper('contextSwitch')
->addActionContext('nctpaymenthandler', 'json')
->initContext();
3.
header('Content-type: application/json');
4.
$this->_response->setHeader('Content-type', 'application/json');
5.
echo Zend_Json::encode($arrResult);
exit;
6.
return json_encode($arrResult);
7.
$this->view->_response = $arrResult;
But when I used cURL to get result, it returned with JSON string surrounded by some HTML tags. Then I tried to user Zend_Rest_Controller
with the options above. It still did not success.
P.S.: Most of those ways above are from the question which had been asked on Stack Overflow.
You need to disable the layout and view rendering.
Explicit disable layout and view renderer:
If your using the json controller action helper you need to add a json context to the action. In this case the json helper will disable the layout and view renderer for you.
It is much easier.
Your code would need to disable the layout as well in order to stop the content being wrapped with the standard page template. But a much easier approach would just be:
the JSON helper will encode your variable as JSON, set the appropriate headers and disable the layout and view script for you.
I Like this way!