Php ZF2:仅为Ajax调用返回JSON

Php ZF2:仅为Ajax调用返回JSON,php,zend-framework2,Php,Zend Framework2,我正在努力学习ZF2。我有一个使用Ajax获取数据的页面。ZF2函数应该返回一个JSON字符串 <?php namespace Application\Controller; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; use Zend\View\Model\JsonModel; class DocumentsController extends AbstractAct

我正在努力学习ZF2。我有一个使用Ajax获取数据的页面。ZF2函数应该返回一个JSON字符串

<?php
namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\View\Model\JsonModel;

class DocumentsController extends AbstractActionController {

    public function indexAction() {

    }

    public function getTreeDataAction() {
        $json = new JsonModel(array(
                    'title' => 'Some Title'
                ));
        return $json;
    }

}

我一直在搜索这个错误以及在ZF2中进行ajax调用的最佳方法,但是ZF1或ZF2 Beta的结果不断出现并且不起作用。谢谢你给我的建议

嗯,这个错误几乎意味着它试图访问默认的渲染策略,这很奇怪。。。您是否已将JsonStrategy添加到视图管理器中

//module.config.php
return array(
    'view_manager' => array(
        'strategies' => array(
           'ViewJsonStrategy',
        ),
    ),
)

此外,最好将ajax调用中的正确accept头设置为仅接受
application/json
content-type。有了这一套,它实际上应该可以工作。不过出于好奇,
modules/\uuuuuu NAMESPACE\uuuu/view/\uuuu NAMESPACE\uuuu/documents/get tree data.phtml
是否存在?

尝试类似的方法

$response = $this->getResponse();
$response->setStatusCode(200);

$jsonArray = {.....}
$response->setBody($jsonArray);

return $response;

还要确保将ViewJsonStrategy添加到模块配置中。

谢谢,我真不敢相信我错过了Rob Allen的DevNotes中的这一部分。是的,我有get-tree-data.phtml,但是对于JsonModel,它没有查找它。冒着先令的风险,我有一些代码来帮助使用zf2的ajax请求:。它有三个新的抽象控制器用于处理jsonRest、jsonRPC和jsonp请求。
$response = $this->getResponse();
$response->setStatusCode(200);

$jsonArray = {.....}
$response->setBody($jsonArray);

return $response;