Мой код в действии zend следующий:
$this->getResponse()
->setHeader('Content-Type', 'application/json');
$result = array("status" => true, "result" => $output);
$json = json_encode($result);
echo $json;
И мой угловой контроллер выглядит следующим образом:
app.controller("statController", function($scope, $http){
$http.get("mydomain/controller/action/")
.success(function(response) {
console.log(response)
}).error(function(response) {
alert(response)
console.log('Error : ' + response);
});
});
Когда я вызываю URL из браузера и проверяю его на вкладке "Сеть", результат получается в json. Но когда я проверяю его по моему угловому звонку, результат имеет такую ошибку:
SyntaxError: JSON.parse: unexpected end of data
Также URL-адрес, который я называю (контроллер zend и действие), находится не в том же домене, что и мой код angular.js. Я использую Zend Framework 1.
ОБНОВЛЕНИЕ Я нашел prblem. Я пытался получить доступ из разных доменов, поэтому мне нужно было добавить
$this->getResponse()->setHeader('Access-Control-Allow-Origin', '*');
К моему действию.
Попробуйте выполнить приведенный ниже код,
public function yourAction()
{
// Disable the layout and view for the action
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender();
// Set the header as JSON
header("Content-Type:application/json");
// Your code starts here
// .........................
$result = array("status" => true, "result" => $output);
$json = json_encode($result);
echo Zend_Json::encode($json);
}
Примечание. Код не проверен. Попробуйте один раз, возможно, это проблема с вашим макетом или чем-то еще.