我们正在使用Zend Framework 2.4进行开发,并且有一个应该支持jsonp回调的API。
不幸的是,Chrome不喜欢它返回的内容类型。它是application / json但需要是application / javascript。
return $jsonModel->setJsonpCallback($jsonpCallback);
在这种情况下有人知道ZF2错误吗?
干杯
答案 0 :(得分:1)
不幸的是,JsonStrategy没有查看JsonModel的jsonp回调。如果我不得不猜测,那是因为JsonModel没有公开JsonModel :: $ jsonCallback的值。 JsonStrategy将默认查看渲染器JsonRenderer,用于jsonp回调并相应地应用内容类型的application / javascript或application / json。
在你的情况下,JsonRenderer没有设置jsonp回调,所以JsonStrategy返回一个内容类型的application / json。您可以通过从控制器访问JsonRenderer并设置jsonp回调值来更正此问题。
class IndexController extends AbstractActionController
{
public function indexAction()
{
$jsonModel = new JsonModel();
$jsonModel->setVariables(array(
'ping' => 'pong',
));
/** @var \Zend\View\Renderer\JsonRenderer $jsonRenderer */
$jsonRenderer = $this->getServiceLocator()->get('ViewJsonRenderer');
$jsonRenderer->setJsonpCallback('wakawaka');
return $jsonModel;
}
}