首页 > 解决方案 > 无法在 zend 框架 3 中使用 ajax 发送

问题描述

我正在尝试发送一个 ajax 在 GrupoUsuarioController 中调用我的函数“alterarPermissoesAction”。

js代码:

$.ajax({
    type: 'POST',
    url: '<?= $this->url( 'grupo-usuario-insumo', [ 'action' => 'alterarPermissoes' ] ) ?>',
    data: dados,
    dataType: 'json',
    success: function( r ) {
        console.log( r );
    }
});

当我这样做时,zf3 尝试呈现一个页面并将该页面作为响应发送给我。

返回图片

我应该怎么做 zf3 停止尝试渲染页面?

标签: ajaxzend-framework3

解决方案


在您的控制器中,alterarPermissoesAction必须以:

return $this->getResponse()->setContent(
            Json::encode(
                [
                    [your response]
                ]));

但不要应用您必须在您的Module.php类似内容中指定的布局:

public function onBootstrap(MvcEvent $e)
{
    ...
    $sharedEvents = $e->getApplication()
        ->getEventManager()
        ->getSharedManager();
    $sharedEvents->attach(__NAMESPACE__, 'dispatch', 
        function ($e) {
            $result = $e->getResult();
            if ($result instanceof \Zend\View\Model\ViewModel) {
                $result->setTerminal($e->getRequest()->isXmlHttpRequest());
            } else {
                throw new \Exception([your message]);
            }
        });
}

推荐阅读